// 由protoc gen gogo生成的代码。不要编辑。
// 来源：rpcpb/rpc。proto 

package rpcpb

import (
	context "context"
	encoding_binary "encoding/binary"
	fmt "fmt"
	io "io"
	math "math"
	math_bits "math/bits"

	_ "github.com/gogo/protobuf/gogoproto"
	proto "github.com/golang/protobuf/proto"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
)

// 引用导入以在未使用错误时抑制错误。
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// 这是一个编译时断言，用于确保生成的文件
// 与编译它所依据的原型包兼容。
// 此行的编译错误可能意味着您的
// 原型包的副本需要更新。
const _ = proto.ProtoPackageIsVersion3 // 请升级原型包

type StresserType int32

const (
	StresserType_KV_WRITE_SMALL      StresserType = 0
	StresserType_KV_WRITE_LARGE      StresserType = 1
	StresserType_KV_READ_ONE_KEY     StresserType = 2
	StresserType_KV_READ_RANGE       StresserType = 3
	StresserType_KV_DELETE_ONE_KEY   StresserType = 4
	StresserType_KV_DELETE_RANGE     StresserType = 5
	StresserType_KV_TXN_WRITE_DELETE StresserType = 6
	StresserType_LEASE               StresserType = 10
	StresserType_ELECTION_RUNNER     StresserType = 20
	StresserType_WATCH_RUNNER        StresserType = 31
	StresserType_LOCK_RACER_RUNNER   StresserType = 41
	StresserType_LEASE_RUNNER        StresserType = 51
)

var StresserType_name = map[int32]string{
	0:  "KV_WRITE_SMALL",
	1:  "KV_WRITE_LARGE",
	2:  "KV_READ_ONE_KEY",
	3:  "KV_READ_RANGE",
	4:  "KV_DELETE_ONE_KEY",
	5:  "KV_DELETE_RANGE",
	6:  "KV_TXN_WRITE_DELETE",
	10: "LEASE",
	20: "ELECTION_RUNNER",
	31: "WATCH_RUNNER",
	41: "LOCK_RACER_RUNNER",
	51: "LEASE_RUNNER",
}

var StresserType_value = map[string]int32{
	"KV_WRITE_SMALL":      0,
	"KV_WRITE_LARGE":      1,
	"KV_READ_ONE_KEY":     2,
	"KV_READ_RANGE":       3,
	"KV_DELETE_ONE_KEY":   4,
	"KV_DELETE_RANGE":     5,
	"KV_TXN_WRITE_DELETE": 6,
	"LEASE":               10,
	"ELECTION_RUNNER":     20,
	"WATCH_RUNNER":        31,
	"LOCK_RACER_RUNNER":   41,
	"LEASE_RUNNER":        51,
}

func (x StresserType) String() string {
	return proto.EnumName(StresserType_name, int32(x))
}

func (StresserType) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_4fbc93a8dcc3881e, []int{0}
}

type Checker int32

const (
	Checker_KV_HASH                Checker = 0
	Checker_LEASE_EXPIRE           Checker = 1
	Checker_RUNNER                 Checker = 2
	Checker_NO_CHECK               Checker = 3
	Checker_SHORT_TTL_LEASE_EXPIRE Checker = 4
)

var Checker_name = map[int32]string{
	0: "KV_HASH",
	1: "LEASE_EXPIRE",
	2: "RUNNER",
	3: "NO_CHECK",
	4: "SHORT_TTL_LEASE_EXPIRE",
}

var Checker_value = map[string]int32{
	"KV_HASH":                0,
	"LEASE_EXPIRE":           1,
	"RUNNER":                 2,
	"NO_CHECK":               3,
	"SHORT_TTL_LEASE_EXPIRE": 4,
}

func (x Checker) String() string {
	return proto.EnumName(Checker_name, int32(x))
}

func (Checker) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_4fbc93a8dcc3881e, []int{1}
}

type Operation int32

const (
	// 未启动是etcd首次启动前的代理状态。
	Operation_NOT_STARTED Operation = 0
	// INITIAL_START_ETCD仅在第一次启动ETCD时被调用。
	Operation_INITIAL_START_ETCD Operation = 10
	// 发送RESTART\u ETCD以重新启动被杀死的ETCD。
	Operation_RESTART_ETCD Operation = 11
	// SIGTERM_ETCD暂停ETCD进程，同时保留数据目录
	// 和以前的ETCD配置。
	Operation_SIGTERM_ETCD Operation = 20
	// SIGQUIT_ETCD_和_REMOVE_DATA终止ETCD进程并删除所有数据
	// 目录以模拟销毁整个机器。
	Operation_SIGQUIT_ETCD_AND_REMOVE_DATA Operation = 21
	// SAVE_SNAPSHOT被发送到触发本地成员将其快照
	// 从tester以指定路径下载到其本地磁盘上。
	Operation_SAVE_SNAPSHOT Operation = 30
	// 从快照还原\u重新启动\u被发送到触发本地成员到
	// 从磁盘从现有快照还原群集，并从恢复的数据重新启动
	// etcd实例。
	Operation_RESTORE_RESTART_FROM_SNAPSHOT Operation = 31
	// RESTART_FROM_快照被发送以触发本地成员重新启动
	// 并加入已从快照恢复的现有群集。
	// 本地成员使用新数据加入此群集。
	Operation_RESTART_FROM_SNAPSHOT Operation = 32
	// SIGQUIT_ETCD_和_ARCHIVE_数据在一致性检查失败时发送，
	// 因此需要归档ETCD数据目录。
	Operation_SIGQUIT_ETCD_AND_ARCHIVE_DATA Operation = 40
	// SIGQUIT_ETCD_和_REMOVE_DATA_和_STOP_代理破坏ETCD进程、
	// ETCD数据和代理服务器。
	Operation_SIGQUIT_ETCD_AND_REMOVE_DATA_AND_STOP_AGENT Operation = 41
	// BLACKHOLE\u PEER\u PORT\u TX\u RX将所有传出/传入数据包从/丢弃到目标成员对等端口上的对等端口。
	Operation_BLACKHOLE_PEER_PORT_TX_RX Operation = 100
	// 解除锁定\u对等\u端口\u发送\u接收删除传出/传入数据包丢弃。
	Operation_UNBLACKHOLE_PEER_PORT_TX_RX Operation = 101
	// DELAY_PEER_PORT_TX_RX延迟所有从/到
	// 目标成员对等端口上的对等端口的传出/传入数据包。
	Operation_DELAY_PEER_PORT_TX_RX Operation = 200
	// 取消延迟\u对等\u端口\u发送\u接收将删除所有传出/传入延迟。
	Operation_UNDELAY_PEER_PORT_TX_RX Operation = 201
)

var Operation_name = map[int32]string{
	0:   "NOT_STARTED",
	10:  "INITIAL_START_ETCD",
	11:  "RESTART_ETCD",
	20:  "SIGTERM_ETCD",
	21:  "SIGQUIT_ETCD_AND_REMOVE_DATA",
	30:  "SAVE_SNAPSHOT",
	31:  "RESTORE_RESTART_FROM_SNAPSHOT",
	32:  "RESTART_FROM_SNAPSHOT",
	40:  "SIGQUIT_ETCD_AND_ARCHIVE_DATA",
	41:  "SIGQUIT_ETCD_AND_REMOVE_DATA_AND_STOP_AGENT",
	100: "BLACKHOLE_PEER_PORT_TX_RX",
	101: "UNBLACKHOLE_PEER_PORT_TX_RX",
	200: "DELAY_PEER_PORT_TX_RX",
	201: "UNDELAY_PEER_PORT_TX_RX",
}

var Operation_value = map[string]int32{
	"NOT_STARTED":                                 0,
	"INITIAL_START_ETCD":                          10,
	"RESTART_ETCD":                                11,
	"SIGTERM_ETCD":                                20,
	"SIGQUIT_ETCD_AND_REMOVE_DATA":                21,
	"SAVE_SNAPSHOT":                               30,
	"RESTORE_RESTART_FROM_SNAPSHOT":               31,
	"RESTART_FROM_SNAPSHOT":                       32,
	"SIGQUIT_ETCD_AND_ARCHIVE_DATA":               40,
	"SIGQUIT_ETCD_AND_REMOVE_DATA_AND_STOP_AGENT": 41,
	"BLACKHOLE_PEER_PORT_TX_RX":                   100,
	"UNBLACKHOLE_PEER_PORT_TX_RX":                 101,
	"DELAY_PEER_PORT_TX_RX":                       200,
	"UNDELAY_PEER_PORT_TX_RX":                     201,
}

func (x Operation) String() string {
	return proto.EnumName(Operation_name, int32(x))
}

func (Operation) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_4fbc93a8dcc3881e, []int{2}
}

// 案例定义分布式系统中的各种系统故障或测试案例，
// 以验证etcd服务器和客户端的正确行为。
type Case int32

const (
	// SIGTERM_ONE_FOLLOWER停止随机选择的跟随者（非引导者）
	// 但不会删除磁盘上的数据目录以供下次重新启动。
	// 在恢复此故障之前，它将等待“延迟毫秒”。
	// 预期的行为是追随者返回在线
	// 并重新加入集群，然后每个成员继续处理
	// 客户端请求（“Put”请求，需要一致意见）。
	Case_SIGTERM_ONE_FOLLOWER Case = 0
	// SIGTERM\u ONE\u FOLLOWER\u直到触发\u快照停止随机选择的
	// FOLLOWER，但不会删除磁盘上的数据目录，以便下次
	// 重新启动。并等待最新的节点（leader）应用
	// 自停止操作以来的条目的快照计数。
	// 预期的行为是跟随者返回在线，
	// 重新加入集群，然后活动领导者向跟随者发送快照
	// 以强制跟随跟随领导者的日志。
	// 恢复后，每个成员都必须能够处理
	// 客户端请求。
	Case_SIGTERM_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT Case = 1
	// SIGTERM_LEADER停止活动的LEADER节点，但不会删除其
	// 磁盘上的数据目录，以便下次重新启动。然后，它在恢复此故障之前等待“delay ms”
	// 以触发选举超时。
	// 预期的行为是新领导人当选，而旧领导人重新上线并作为追随者重新加入集群。
	// 恢复后，每个成员都必须能够处理
	// 客户端请求。
	Case_SIGTERM_LEADER Case = 2
	// SIGTERM_LEADER_直到触发_快照停止活动的LEADER节点
	// 但不会删除其磁盘上的数据目录以便下次重新启动。
	// 并等待最新节点（“新”引线）应用
	// 自停止操作以来的条目的快照计数。
	// 预期的行为是集群选举一个新的领导者，而
	// 旧的领导者返回在线并作为追随者重新加入集群。
	// 并接收新领导的快照以覆盖其
	// 存储。和往常一样，恢复后，每个成员都必须能够处理客户端请求。
	Case_SIGTERM_LEADER_UNTIL_TRIGGER_SNAPSHOT Case = 3
	// SIGTERM_QUORUM停止大多数节点以使整个集群
	// 不可操作，但不会删除已停止节点上的数据目录
	// 以便下次重新启动。在恢复故障之前，它会等待“延迟毫秒”。
	// 预期的行为是节点恢复联机，因此集群
	// 也恢复运行。和往常一样，恢复后，每个成员
	// 必须能够处理客户端请求。
	Case_SIGTERM_QUORUM Case = 4
	// SIGTERM_将停止整个群集，但不会删除磁盘上的数据目录
	// 以备下次重新启动。在恢复
	// 此故障之前，它将等待“延迟毫秒”。
	// 预期的行为是节点恢复联机，因此集群
	// 也恢复运行。和往常一样，恢复后，每个成员
	// 都必须能够处理客户端请求。
	Case_SIGTERM_ALL Case = 5
	// SIGQUIT_和_REMOVE_一个跟随者停止随机选择的跟随者
	// （非引导者），删除其磁盘上的数据目录，并从集群中删除此成员（成员资格重新配置）。恢复时，测试员添加一个新成员，该成员将使用新数据加入现有集群。在恢复此
	// 故障之前，它将等待“延迟毫秒”。这模拟销毁一台跟随器机器，其中操作员
	// 需要从新机器添加新成员。
	// 预期的行为是一个新成员加入现有集群，
	// 然后每个成员继续处理客户端请求。
	Case_SIGQUIT_AND_REMOVE_ONE_FOLLOWER Case = 10
	// SIGQUIT_和_删除一个跟随者，直到_触发器_快照停止随机选择的跟随者，删除其磁盘上的数据目录，并从集群中删除此成员（成员资格重新配置）。恢复时，测试员添加一个新成员，该成员加入现有集群
	// 重新启动。在成员删除时，集群将等待最新节点
	// /（leader）应用自停止操作以来的条目的快照计数。
	// 这模拟销毁一台主机，操作员需要从一台新机器中添加一个新成员。
	// 预期的行为是新成员加入现有集群，
	// 并从活动领导接收快照。和往常一样，在
	// 恢复之后，每个成员都必须能够处理客户端请求。
	Case_SIGQUIT_AND_REMOVE_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT Case = 11
	// SIGQUIT_和_REMOVE_LEADER停止活动的LEADER节点，删除其磁盘上的
	// 数据目录，并从群集中删除此成员。
	// 在恢复时，tester添加了一个新成员，该成员使用新数据加入
	// 现有集群。在
	// 恢复此故障之前，它等待“延迟毫秒”。这将模拟销毁一台引导计算机
	// 其中操作员需要从一台新计算机添加一个新成员。
	// 预期的行为是一个新成员加入现有集群，
	// 然后每个成员继续处理客户端请求。
	Case_SIGQUIT_AND_REMOVE_LEADER Case = 12
	// SIGQUIT_和_REMOVE_LEADER_直到_TRIGGER_快照停止活动LEADER，
	// 删除其磁盘上的数据目录，并从
	// 集群中删除此成员（成员资格重新配置）。恢复时，tester添加一个新的
	// 成员，该成员加入现有的集群重启。在成员
	// remove上，集群等待最新节点（新的领导者）应用
	// /自停止操作以来的条目的快照计数。这模拟了
	// 销毁一台主机，操作员需要从一台新机器添加一个新成员
	// 。
	// 预期的行为是，在成员移除时，集群选择一个新的
	// 领导者，并且一个新成员加入现有集群，并从新选择的领导者接收一个
	// 快照。和往常一样，恢复后，每个
	// 成员必须能够处理客户端请求。
	Case_SIGQUIT_AND_REMOVE_LEADER_UNTIL_TRIGGER_SNAPSHOT Case = 13
	// SIGQUIT_和_删除_QUORUM_和_恢复_LEADER_快照_从头开始首先
	// 停止大多数节点，删除这些QUORUM节点上的数据目录
	// 使整个集群无法运行。既然quorum和它们的
	// 数据已完全销毁，集群甚至无法删除不可用的节点
	// （例如，三分之二的人失败，因此没有领导人可以当选）。
	// 让我们假设节点A、B和C的三节点集群。有一天，节点A和B 
	// 被销毁，它们的所有数据都消失了。唯一可行的解决方案是
	// 从C的最新快照恢复。
	// 
	// 模拟：
	// 1。假设节点C是具有最新数据的当前领导者。
	// 2。在销毁节点A和B之前，从节点C下载快照。
	// 3。破坏节点A和B，使整个集群无法运行。
	// 4。现在节点C也无法运行。
	// 5。SIGTERM节点C并删除其数据目录。
	// 6。从节点C的最新快照文件还原新的种子成员。
	// 7。添加另一个成员以建立2节点群集。
	// 8。添加另一个成员以建立3节点群集。
	// 9。如果有，请添加更多。
	// 
	// 预期的行为是etcd成功地从这样的
	// 灾难性情况中恢复，因为3节点集群中只有1节点存活，
	// 新成员加入现有集群，恢复过程后，快照
	// 中以前的数据仍然保留。像往常一样，恢复后，
	// 每个成员都必须能够处理客户端请求。
	Case_SIGQUIT_AND_REMOVE_QUORUM_AND_RESTORE_LEADER_SNAPSHOT_FROM_SCRATCH Case = 14
	// BLACKHOLE\u PEER\u PORT\u TX\u RX\u ONE\u FOLLOWER将所有传出/传入的
	// 数据包从/到随机选择的FOLLOWER上的对等端口
	// （非leader），并等待“延迟ms”直到恢复。
	// 预期的行为是，一旦撤消删除操作，
	// 每个成员都必须能够处理客户端请求。
	Case_BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER Case = 100
	// BLACKHOLE\u PEER\u PORT\u TX\u RX\u ONE\u FOLLOWER\u TRIGGER\u SNAPSHOT丢弃
	// /从/到随机
	// 选择的FOLLOWER（非leader）上的对等端口的所有传出/传入数据包，并等待最新节点
	// （leader）应用自黑洞
	// 操作以来的条目的快照计数。
	// 预期的行为是，一旦数据包丢弃操作撤消，
	// 慢速跟随者会试图追赶，可能会从活动的引导者那里接收快照
	// 。一如既往，恢复后，每个成员必须
	// 能够处理客户端请求。
	Case_BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT Case = 101
	// BLACKHOLE\u PEER\u PORT\u TX\u RX\u LEADER将所有传出/传入的数据包从活动LEADER（隔离）上的对等端口丢弃，并等待
	// “delay ms”直到恢复，以触发选择超时。
	// 预期的行为是，选举超时后，新的领导者获得
	// 当选，一旦放弃操作，旧的领导者返回
	// 并作为追随者重新加入集群。恢复后，每个成员都必须能够处理客户端请求。
	Case_BLACKHOLE_PEER_PORT_TX_RX_LEADER Case = 102
	// BLACKHOLE\u PEER\u PORT\u TX\u RX\u LEADER\u直到触发快照删除所有
	// 从活动LEADER上的对等端口传出/传入的数据包，
	// 并等待最新节点（LEADER）应用快照
	// 自BLACKHOLE操作以来的条目计数。
	// 预期的行为是集群选择一个新的领导者，一旦
	// 删除操作被撤消，旧的领导者将返回并作为追随者重新加入
	// 集群。缓慢的跟随者试图追赶，可能是
	// 从新的活跃领导者那里接收快照。和往常一样，在
	// 恢复之后，每个成员都必须能够处理客户端请求。
	Case_BLACKHOLE_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT Case = 103
	// BLACKHOLE\u PEER\u PORT\u TX\u RX\u QUORUM将所有传出/传入数据包从/到群集多数节点上的对等端口，从而丢失其
	// 先导和群集不可操作。并等待“延迟ms”
	// 直到恢复。
	// 预期的行为是，一旦数据包丢弃操作被撤消，
	// 节点重新联机，因此集群恢复运行。像往常一样，
	// 恢复后，每个成员都必须能够处理客户端请求。
	Case_BLACKHOLE_PEER_PORT_TX_RX_QUORUM Case = 104
	// BLACKHOLE\u PEER\u PORT\u TX\u RX\u ALL将所有传出/传入数据包从所有节点上的对等端口丢弃，从而使集群完全无法运行。它等待“延迟毫秒”直到恢复。
	// 预期的行为是，一旦数据包丢弃操作撤消，
	// 节点重新联机，从而集群恢复运行。一如既往，
	// 恢复后，每个成员必须能够处理客户端请求。
	Case_BLACKHOLE_PEER_PORT_TX_RX_ALL Case = 105
	// 延迟\u对等\u端口\u发送\u接收\u一个跟随者延迟传出/传入数据包
	// 从/到随机选择的跟随者（非领先者）上的对等端口。
	// 它等待“延迟毫秒”直到恢复。
	// 预期的行为是，一旦数据包延迟操作被撤消，
	// 跟随者将返回并尝试跟上来自
	// 集群的最新更改。和往常一样，恢复后，每个成员都必须能够处理客户端请求。
	Case_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER Case = 200
	// 随机延迟对等端口发送接收一个跟随者延迟传出/传入
	// 在随机选择的跟随者
	// （非前导）上从对等端口发送/发送数据包，随机持续时间（因此隔离）。它
	// 等待“延迟毫秒”直到恢复。
	// 预期的行为是，一旦数据包延迟操作撤消，
	// 每个成员都必须能够处理客户端请求。
	Case_RANDOM_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER Case = 201
	// 延迟对等端口发送接收一个跟随者直到触发快照延迟
	// 从随机选择的
	// 跟随者（非引导者）上的对等端口发送/接收数据包，并等待最新节点（引导者）
	// 应用自延迟操作以来的条目的快照计数。
	// 预期的行为是延迟跟随者被隔离到当前活动引导者后面，并且一旦延迟操作被撤消，
	// 慢速跟随者返回并可能从活动引导者那里接收快照
	// 。和往常一样，恢复后，每个成员必须
	// 能够处理客户端请求。
	Case_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT Case = 202
	// 随机延迟对等端口发送接收一个跟随者直到触发快照延迟
	// 在随机选择的
	// 跟随者（非引导者）上从/到对等端口的传出/传入数据包，随机持续时间，并等待
	// 最新节点（引导者）应用自延迟操作以来
	// 条目的快照计数。
	// 预期的行为是延迟跟随者被隔离到当前活动引导者后面，一旦延迟操作被撤消，延迟跟随者返回并赶上，可能从活动引导者那里接收到一个
	// 快照。和往常一样，恢复后，每个成员
	// 都必须能够处理客户端请求。
	Case_RANDOM_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT Case = 203
	// DELAY_PEER_PORT_TX_RX_LEADER延迟来自/到
	// 活动LEADER上的对等端口的传出/传入数据包。并等待“延迟ms”，直到
	// 恢复。
	// 预期的行为是集群可能会选择一个新的领导者，而
	// 一旦数据包延迟操作被撤消，（旧）领导者将返回
	// 并尝试跟上集群的最新更改。像往常一样，
	// 恢复后，每个成员都必须能够处理客户端请求。
	Case_DELAY_PEER_PORT_TX_RX_LEADER Case = 204
	// 随机延迟对等端口发送接收前导延迟传出/传入数据包
	// 以随机时间从/到活动前导上的对等端口
	// 持续时间。并等待“延迟毫秒”，直到恢复。
	// 预期的行为是集群可能会选择一个新的领导者，而
	// 一旦数据包延迟操作被撤消，（旧）领导者将返回
	// 并尝试跟上集群的最新更改。与往常一样，
	// 恢复后，每个成员都必须能够处理客户端请求。
	Case_RANDOM_DELAY_PEER_PORT_TX_RX_LEADER Case = 205
	// 延迟对等端口发送接收引线直到触发快照延迟
	// 从/到活动引线上对等端口的传出/传入数据包，
	// 并等待最新节点（当前或新引线）应用
	// 自延迟操作以来的条目快照计数。
	// 预期的行为是集群可能会选择一个新的领导者，而
	// 旧的领导者会被孤立，在当前的活跃领导者后面，
	// 一旦延迟操作被撤销，缓慢的跟随者就会返回
	// 并迎头赶上，可能从活动领导处接收快照。
	// 恢复后，每个成员都必须能够处理客户端
	// 请求。
	Case_DELAY_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT Case = 206
	// 随机延迟对等端口发送接收前导直到触发快照延迟
	// 从活动前导上的对等端口传出/传入数据包，
	// 具有随机持续时间。它等待最新的节点
	// （当前或新领导）应用自
	// 延迟操作以来的条目的快照计数。
	// 预期的行为是集群可能会选择一个新的领导者，而
	// 旧的领导者会被孤立，并在当前的活跃领导者后面，
	// 一旦延迟操作被撤销，缓慢的追随者就会回来
	// 并迎头赶上，可能从活动领导处接收快照。
	// 恢复后，每个成员都必须能够处理客户端
	// 请求。
	Case_RANDOM_DELAY_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT Case = 207
	// 延迟\u对等\u端口\u发送\u接收\u仲裁延迟来自/到
	// 群集多数节点上的对等端口的传出/传入数据包。它等待
	// “延迟毫秒”直到恢复，这可能会触发选举超时。
	// 预期的行为是集群可能会选举一个新的领导者，而
	// 大量节点与慢速网络斗争，一旦延迟操作
	// 撤消，节点返回，集群恢复运行。像往常一样，
	// 恢复后，每个成员都必须能够处理客户端请求。
	Case_DELAY_PEER_PORT_TX_RX_QUORUM Case = 208
	// 随机延迟对等端口发送接收仲裁延迟传出/传入数据包
	// 从/到群集多数节点上的对等端口，随机
	// 持续时间。它等待“延迟毫秒”直到恢复，很可能是
	// 触发选举超时。
	// 预期的行为是集群可能会选出一个新的领导者，而
	// 节点的仲裁与缓慢的网络抗争，并且一旦延迟操作
	// 撤消，节点返回，集群恢复运行。像往常一样，
	// 恢复后，每个成员都必须能够处理客户端请求。
	Case_RANDOM_DELAY_PEER_PORT_TX_RX_QUORUM Case = 209
	// 延迟\u对等\u端口\u发送\u接收\u所有延迟从/到
	// 所有节点上的对等端口的传出/传入数据包。它等待“延迟ms”直到恢复，
	// 可能触发选举超时。
	// 预期的行为是集群可能完全无法运行，
	// 在整个集群中与缓慢的网络抗争。一旦delay 
	// 操作撤消，节点返回，集群返回工作状态。
	// 恢复后，每个成员都必须能够处理客户端
	// 请求。
	Case_DELAY_PEER_PORT_TX_RX_ALL Case = 210
	// 随机\延迟\对等\端口\发送\接收\所有延迟传出/传入数据包
	// 从/到所有节点上的对等端口，随机持续时间。
	// 并等待“延迟毫秒”直到恢复，可能会触发
	// 选举超时。
	// 预期的行为是集群可能完全不可操作，
	// 与整个集群中的慢速网络进行斗争。一旦delay 
	// 操作被撤消，节点返回，集群恢复工作。
	// 恢复后，每个成员都必须能够处理客户端
	// 请求。
	Case_RANDOM_DELAY_PEER_PORT_TX_RX_ALL Case = 211
	// 在测试
	// 压力负载下的一致性和正确性时，无应力故障停止注入故障，持续时间为
	// “延迟毫秒”。目标是确保集群在恢复方面仍然取得进展，并验证系统在失败注入序列之后没有死锁。
	// 预期的行为是集群在健康的
	// 条件下保持完全运行。和往常一样，恢复后，每个成员都必须能够处理
	// 客户端请求。
	Case_NO_FAIL_WITH_STRESS Case = 300
	// NO_FAIL_WITH_NO_STRESS_FOR_LIVENESS既不注入失败，也不向集群发送stressig客户端请求，持续时间为
	// “延迟毫秒”。目标是确保集群在恢复方面仍然取得进展，并验证系统在失败注入序列之后没有死锁。
	// 预期的行为是集群在健康的
	// 条件下保持完全运行，并且活跃期内的客户端请求成功，没有出现
	// 错误。
	// 注意：Google Chubby就是这样进行故障注入测试的
	// https:
	Case_NO_FAIL_WITH_NO_STRESS_FOR_LIVENESS Case = 301
	// 故障点将故障点注入etcd服务器运行时，在关键代码路径中触发恐慌。
	Case_FAILPOINTS Case = 400
	// 带有磁盘IO延迟的故障点在raftAfterSave代码路径中注入高磁盘I/O延迟故障。
	Case_FAILPOINTS_WITH_DISK_IO_LATENCY Case = 401
	// 外部运行外部故障注入脚本。
	Case_EXTERNAL Case = 500
)

var Case_name = map[int32]string{
	0:   "SIGTERM_ONE_FOLLOWER",
	1:   "SIGTERM_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT",
	2:   "SIGTERM_LEADER",
	3:   "SIGTERM_LEADER_UNTIL_TRIGGER_SNAPSHOT",
	4:   "SIGTERM_QUORUM",
	5:   "SIGTERM_ALL",
	10:  "SIGQUIT_AND_REMOVE_ONE_FOLLOWER",
	11:  "SIGQUIT_AND_REMOVE_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT",
	12:  "SIGQUIT_AND_REMOVE_LEADER",
	13:  "SIGQUIT_AND_REMOVE_LEADER_UNTIL_TRIGGER_SNAPSHOT",
	14:  "SIGQUIT_AND_REMOVE_QUORUM_AND_RESTORE_LEADER_SNAPSHOT_FROM_SCRATCH",
	100: "BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER",
	101: "BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT",
	102: "BLACKHOLE_PEER_PORT_TX_RX_LEADER",
	103: "BLACKHOLE_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT",
	104: "BLACKHOLE_PEER_PORT_TX_RX_QUORUM",
	105: "BLACKHOLE_PEER_PORT_TX_RX_ALL",
	200: "DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER",
	201: "RANDOM_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER",
	202: "DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT",
	203: "RANDOM_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT",
	204: "DELAY_PEER_PORT_TX_RX_LEADER",
	205: "RANDOM_DELAY_PEER_PORT_TX_RX_LEADER",
	206: "DELAY_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT",
	207: "RANDOM_DELAY_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT",
	208: "DELAY_PEER_PORT_TX_RX_QUORUM",
	209: "RANDOM_DELAY_PEER_PORT_TX_RX_QUORUM",
	210: "DELAY_PEER_PORT_TX_RX_ALL",
	211: "RANDOM_DELAY_PEER_PORT_TX_RX_ALL",
	300: "NO_FAIL_WITH_STRESS",
	301: "NO_FAIL_WITH_NO_STRESS_FOR_LIVENESS",
	400: "FAILPOINTS",
	401: "FAILPOINTS_WITH_DISK_IO_LATENCY",
	500: "EXTERNAL",
}

var Case_value = map[string]int32{
	"SIGTERM_ONE_FOLLOWER":                                               0,
	"SIGTERM_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT":                        1,
	"SIGTERM_LEADER":                                                     2,
	"SIGTERM_LEADER_UNTIL_TRIGGER_SNAPSHOT":                              3,
	"SIGTERM_QUORUM":                                                     4,
	"SIGTERM_ALL":                                                        5,
	"SIGQUIT_AND_REMOVE_ONE_FOLLOWER":                                    10,
	"SIGQUIT_AND_REMOVE_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT":             11,
	"SIGQUIT_AND_REMOVE_LEADER":                                          12,
	"SIGQUIT_AND_REMOVE_LEADER_UNTIL_TRIGGER_SNAPSHOT":                   13,
	"SIGQUIT_AND_REMOVE_QUORUM_AND_RESTORE_LEADER_SNAPSHOT_FROM_SCRATCH": 14,
	"BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER":                             100,
	"BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT":      101,
	"BLACKHOLE_PEER_PORT_TX_RX_LEADER":                                   102,
	"BLACKHOLE_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT":            103,
	"BLACKHOLE_PEER_PORT_TX_RX_QUORUM":                                   104,
	"BLACKHOLE_PEER_PORT_TX_RX_ALL":                                      105,
	"DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER":                                 200,
	"RANDOM_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER":                          201,
	"DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT":          202,
	"RANDOM_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT":   203,
	"DELAY_PEER_PORT_TX_RX_LEADER":                                       204,
	"RANDOM_DELAY_PEER_PORT_TX_RX_LEADER":                                205,
	"DELAY_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT":                206,
	"RANDOM_DELAY_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT":         207,
	"DELAY_PEER_PORT_TX_RX_QUORUM":                                       208,
	"RANDOM_DELAY_PEER_PORT_TX_RX_QUORUM":                                209,
	"DELAY_PEER_PORT_TX_RX_ALL":                                          210,
	"RANDOM_DELAY_PEER_PORT_TX_RX_ALL":                                   211,
	"NO_FAIL_WITH_STRESS":                                                300,
	"NO_FAIL_WITH_NO_STRESS_FOR_LIVENESS":                                301,
	"FAILPOINTS":                                                         400,
	"FAILPOINTS_WITH_DISK_IO_LATENCY":                                    401,
	"EXTERNAL":                                                           500,
}

func (x Case) String() string {
	return proto.EnumName(Case_name, int32(x))
}

func (Case) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_4fbc93a8dcc3881e, []int{3}
}

type Request struct {
	Operation Operation `protobuf:"varint,1,opt,name=Operation,proto3,enum=rpcpb.Operation" json:"Operation,omitempty"`
	// 成员包含来自测试仪配置的相同成员对象。
	Member *Member `protobuf:"bytes,2,opt,name=Member,proto3" json:"Member,omitempty"`
	// 测试仪包含测试仪配置。
	Tester               *Tester  `protobuf:"bytes,3,opt,name=Tester,proto3" json:"Tester,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Request) Reset()         { *m = Request{} }
func (m *Request) String() string { return proto.CompactTextString(m) }
func (*Request) ProtoMessage()    {}
func (*Request) Descriptor() ([]byte, []int) {
	return fileDescriptor_4fbc93a8dcc3881e, []int{0}
}
func (m *Request) XXX_Unmarshal(b []byte) error {
	return m.Unmarshal(b)
}
func (m *Request) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	if deterministic {
		return xxx_messageInfo_Request.Marshal(b, m, deterministic)
	} else {
		b = b[:cap(b)]
		n, err := m.MarshalToSizedBuffer(b)
		if err != nil {
			return nil, err
		}
		return b[:n], nil
	}
}
func (m *Request) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Request.Merge(m, src)
}
func (m *Request) XXX_Size() int {
	return m.Size()
}
func (m *Request) XXX_DiscardUnknown() {
	xxx_messageInfo_Request.DiscardUnknown(m)
}

var xxx_messageInfo_Request proto.InternalMessageInfo

// 快照信息包含保存快照请求结果。
type SnapshotInfo struct {
	MemberName           string   `protobuf:"bytes,1,opt,name=MemberName,proto3" json:"MemberName,omitempty"`
	MemberClientURLs     []string `protobuf:"bytes,2,rep,name=MemberClientURLs,proto3" json:"MemberClientURLs,omitempty"`
	SnapshotPath         string   `protobuf:"bytes,3,opt,name=SnapshotPath,proto3" json:"SnapshotPath,omitempty"`
	SnapshotFileSize     string   `protobuf:"bytes,4,opt,name=SnapshotFileSize,proto3" json:"SnapshotFileSize,omitempty"`
	SnapshotTotalSize    string   `protobuf:"bytes,5,opt,name=SnapshotTotalSize,proto3" json:"SnapshotTotalSize,omitempty"`
	SnapshotTotalKey     int64    `protobuf:"varint,6,opt,name=SnapshotTotalKey,proto3" json:"SnapshotTotalKey,omitempty"`
	SnapshotHash         int64    `protobuf:"varint,7,opt,name=SnapshotHash,proto3" json:"SnapshotHash,omitempty"`
	SnapshotRevision     int64    `protobuf:"varint,8,opt,name=SnapshotRevision,proto3" json:"SnapshotRevision,omitempty"`
	Took                 string   `protobuf:"bytes,9,opt,name=Took,proto3" json:"Took,omitempty"`
	Version              string   `protobuf:"bytes,10,opt,name=Version,proto3" json:"Version,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *SnapshotInfo) Reset()         { *m = SnapshotInfo{} }
func (m *SnapshotInfo) String() string { return proto.CompactTextString(m) }
func (*SnapshotInfo) ProtoMessage()    {}
func (*SnapshotInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_4fbc93a8dcc3881e, []int{1}
}
func (m *SnapshotInfo) XXX_Unmarshal(b []byte) error {
	return m.Unmarshal(b)
}
func (m *SnapshotInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	if deterministic {
		return xxx_messageInfo_SnapshotInfo.Marshal(b, m, deterministic)
	} else {
		b = b[:cap(b)]
		n, err := m.MarshalToSizedBuffer(b)
		if err != nil {
			return nil, err
		}
		return b[:n], nil
	}
}
func (m *SnapshotInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_SnapshotInfo.Merge(m, src)
}
func (m *SnapshotInfo) XXX_Size() int {
	return m.Size()
}
func (m *SnapshotInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_SnapshotInfo.DiscardUnknown(m)
}

var xxx_messageInfo_SnapshotInfo proto.InternalMessageInfo

type Response struct {
	Success bool   `protobuf:"varint,1,opt,name=Success,proto3" json:"Success,omitempty"`
	Status  string `protobuf:"bytes,2,opt,name=Status,proto3" json:"Status,omitempty"`
	// 成员包含来自tester请求的相同成员对象。
	Member *Member `protobuf:"bytes,3,opt,name=Member,proto3" json:"Member,omitempty"`
	// 快照信息包含保存快照请求结果。
	SnapshotInfo         *SnapshotInfo `protobuf:"bytes,4,opt,name=SnapshotInfo,proto3" json:"SnapshotInfo,omitempty"`
	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
	XXX_unrecognized     []byte        `json:"-"`
	XXX_sizecache        int32         `json:"-"`
}

func (m *Response) Reset()         { *m = Response{} }
func (m *Response) String() string { return proto.CompactTextString(m) }
func (*Response) ProtoMessage()    {}
func (*Response) Descriptor() ([]byte, []int) {
	return fileDescriptor_4fbc93a8dcc3881e, []int{2}
}
func (m *Response) XXX_Unmarshal(b []byte) error {
	return m.Unmarshal(b)
}
func (m *Response) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	if deterministic {
		return xxx_messageInfo_Response.Marshal(b, m, deterministic)
	} else {
		b = b[:cap(b)]
		n, err := m.MarshalToSizedBuffer(b)
		if err != nil {
			return nil, err
		}
		return b[:n], nil
	}
}
func (m *Response) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Response.Merge(m, src)
}
func (m *Response) XXX_Size() int {
	return m.Size()
}
func (m *Response) XXX_DiscardUnknown() {
	xxx_messageInfo_Response.DiscardUnknown(m)
}

var xxx_messageInfo_Response proto.InternalMessageInfo

type Member struct {
	// EtcdExec是代理服务器中的可执行etcd二进制路径。
	EtcdExec string `protobuf:"bytes,1,opt,name=EtcdExec,proto3" json:"EtcdExec,omitempty" yaml:"etcd-exec"`
	// AgentAddr是代理HTTP服务器地址。
	AgentAddr string `protobuf:"bytes,11,opt,name=AgentAddr,proto3" json:"AgentAddr,omitempty" yaml:"agent-addr"`
	// FailpointHTTPAddr是代理的failpoints HTTP服务器地址。
	FailpointHTTPAddr string `protobuf:"bytes,12,opt,name=FailpointHTTPAddr,proto3" json:"FailpointHTTPAddr,omitempty" yaml:"failpoint-http-addr"`
	// BaseDir是存储所有日志和etcd数据的基本目录。
	BaseDir string `protobuf:"bytes,101,opt,name=BaseDir,proto3" json:"BaseDir,omitempty" yaml:"base-dir"`
	// EtcdClientProxy在需要代理客户端流量时为true。
	// 如果为true，则侦听客户端URL端口必须与播发客户端URL端口不同。
	EtcdClientProxy bool `protobuf:"varint,201,opt,name=EtcdClientProxy,proto3" json:"EtcdClientProxy,omitempty" yaml:"etcd-client-proxy"`
	// EtcdPeerProxy在需要代理对等流量时为true。
	// 如果为true，则侦听对等URL端口必须与播发对等URL端口不同。
	EtcdPeerProxy bool `protobuf:"varint,202,opt,name=EtcdPeerProxy,proto3" json:"EtcdPeerProxy,omitempty" yaml:"etcd-peer-proxy"`
	// EtcdClientEndpoint是etcd客户端端点。
	EtcdClientEndpoint string `protobuf:"bytes,301,opt,name=EtcdClientEndpoint,proto3" json:"EtcdClientEndpoint,omitempty" yaml:"etcd-client-endpoint"`
	// Etcd定义Etcd二进制配置标志。
	Etcd *Etcd `protobuf:"bytes,302,opt,name=Etcd,proto3" json:"Etcd,omitempty" yaml:"etcd"`
	// EtcdOnSnapshotRestore定义了etcd期间的一次性使用配置
	// 快照恢复过程。
	EtcdOnSnapshotRestore *Etcd `protobuf:"bytes,303,opt,name=EtcdOnSnapshotRestore,proto3" json:"EtcdOnSnapshotRestore,omitempty"`
	// ClientCertData包含来自此成员的etcd服务器的证书文件内容。
	ClientCertData string `protobuf:"bytes,401,opt,name=ClientCertData,proto3" json:"ClientCertData,omitempty" yaml:"client-cert-data"`
	ClientCertPath string `protobuf:"bytes,402,opt,name=ClientCertPath,proto3" json:"ClientCertPath,omitempty" yaml:"client-cert-path"`
	// ClientKeyData包含来自此成员的etcd服务器的关键文件内容。
	ClientKeyData string `protobuf:"bytes,403,opt,name=ClientKeyData,proto3" json:"ClientKeyData,omitempty" yaml:"client-key-data"`
	ClientKeyPath string `protobuf:"bytes,404,opt,name=ClientKeyPath,proto3" json:"ClientKeyPath,omitempty" yaml:"client-key-path"`
	// ClientTrustedSCADA包含来自此成员的etcd服务器的受信任CA文件内容。
	ClientTrustedCAData string `protobuf:"bytes,405,opt,name=ClientTrustedCAData,proto3" json:"ClientTrustedCAData,omitempty" yaml:"client-trusted-ca-data"`
	ClientTrustedCAPath string `protobuf:"bytes,406,opt,name=ClientTrustedCAPath,proto3" json:"ClientTrustedCAPath,omitempty" yaml:"client-trusted-ca-path"`
	// PeerCertData包含来自此成员的etcd服务器的证书文件内容。
	PeerCertData string `protobuf:"bytes,501,opt,name=PeerCertData,proto3" json:"PeerCertData,omitempty" yaml:"peer-cert-data"`
	PeerCertPath string `protobuf:"bytes,502,opt,name=PeerCertPath,proto3" json:"PeerCertPath,omitempty" yaml:"peer-cert-path"`
	// PeerKeyData包含来自此成员的etcd服务器的关键文件内容。
	PeerKeyData string `protobuf:"bytes,503,opt,name=PeerKeyData,proto3" json:"PeerKeyData,omitempty" yaml:"peer-key-data"`
	PeerKeyPath string `protobuf:"bytes,504,opt,name=PeerKeyPath,proto3" json:"PeerKeyPath,omitempty" yaml:"peer-key-path"`
	// PeerTrustedCAData包含来自此成员的etcd服务器的受信任CA文件内容。
	PeerTrustedCAData string `protobuf:"bytes,505,opt,name=PeerTrustedCAData,proto3" json:"PeerTrustedCAData,omitempty" yaml:"peer-trusted-ca-data"`
	PeerTrustedCAPath string `protobuf:"bytes,506,opt,name=PeerTrustedCAPath,proto3" json:"PeerTrustedCAPath,omitempty" yaml:"peer-trusted-ca-path"`
	// SnapshotPath是要存储或还原的快照文件路径。
	SnapshotPath string `protobuf:"bytes,601,opt,name=SnapshotPath,proto3" json:"SnapshotPath,omitempty" yaml:"snapshot-path"`
	// SnapshotInfo包含上次保存\u快照请求结果。
	SnapshotInfo *SnapshotInfo `protobuf:"bytes,602,opt,name=SnapshotInfo,proto3" json:"SnapshotInfo,omitempty"`
	// Failpoints是启动etcd时要使用的GOFAIL_Failpoints环境变量值。
	Failpoints           string   `protobuf:"bytes,701,opt,name=Failpoints,proto3" json:"Failpoints,omitempty" yaml:"failpoints"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Member) Reset()         { *m = Member{} }
func (m *Member) String() string { return proto.CompactTextString(m) }
func (*Member) ProtoMessage()    {}
func (*Member) Descriptor() ([]byte, []int) {
	return fileDescriptor_4fbc93a8dcc3881e, []int{3}
}
func (m *Member) XXX_Unmarshal(b []byte) error {
	return m.Unmarshal(b)
}
func (m *Member) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	if deterministic {
		return xxx_messageInfo_Member.Marshal(b, m, deterministic)
	} else {
		b = b[:cap(b)]
		n, err := m.MarshalToSizedBuffer(b)
		if err != nil {
			return nil, err
		}
		return b[:n], nil
	}
}
func (m *Member) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Member.Merge(m, src)
}
func (m *Member) XXX_Size() int {
	return m.Size()
}
func (m *Member) XXX_DiscardUnknown() {
	xxx_messageInfo_Member.DiscardUnknown(m)
}

var xxx_messageInfo_Member proto.InternalMessageInfo

type Tester struct {
	DataDir string `protobuf:"bytes,1,opt,name=DataDir,proto3" json:"DataDir,omitempty" yaml:"data-dir"`
	Network string `protobuf:"bytes,2,opt,name=Network,proto3" json:"Network,omitempty" yaml:"network"`
	Addr    string `protobuf:"bytes,3,opt,name=Addr,proto3" json:"Addr,omitempty" yaml:"addr"`
	// DelayLatencyMsRv是以毫秒为单位的延迟，
	// 注入模拟慢速网络。
	DelayLatencyMs uint32 `protobuf:"varint,11,opt,name=DelayLatencyMs,proto3" json:"DelayLatencyMs,omitempty" yaml:"delay-latency-ms"`
	// DelayLatencyMsRv是延迟延迟随机变量，以毫秒为单位。
	DelayLatencyMsRv uint32 `protobuf:"varint,12,opt,name=DelayLatencyMsRv,proto3" json:"DelayLatencyMsRv,omitempty" yaml:"delay-latency-ms-rv"`
	// UpdatedDelayalEncyms是以毫秒为单位的更新延迟，
	// 注入模拟慢速网络。这是应用的最终延迟，
	// 如果延迟数是从给定的延迟延迟字段随机生成的。
	UpdatedDelayLatencyMs uint32 `protobuf:"varint,13,opt,name=UpdatedDelayLatencyMs,proto3" json:"UpdatedDelayLatencyMs,omitempty" yaml:"updated-delay-latency-ms"`
	// RoundLimit是运行失败集的轮数限制（-1无限制运行）。
	RoundLimit int32 `protobuf:"varint,21,opt,name=RoundLimit,proto3" json:"RoundLimit,omitempty" yaml:"round-limit"`
	// ExitOnCaseFail为真，然后在第一次失败时退出测试仪。
	ExitOnCaseFail bool `protobuf:"varint,22,opt,name=ExitOnCaseFail,proto3" json:"ExitOnCaseFail,omitempty" yaml:"exit-on-failure"`
	// EnablePprof为true以启用探查器。
	EnablePprof bool `protobuf:"varint,23,opt,name=EnablePprof,proto3" json:"EnablePprof,omitempty" yaml:"enable-pprof"`
	// CaseDelayMs是注入失败后的延迟持续时间。
	// 在触发快照或无op故障情况下非常有用。
	CaseDelayMs uint32 `protobuf:"varint,31,opt,name=CaseDelayMs,proto3" json:"CaseDelayMs,omitempty" yaml:"case-delay-ms"`
	// CaseShuffle对失败注入顺序进行随机化是正确的。
	CaseShuffle bool `protobuf:"varint,32,opt,name=CaseShuffle,proto3" json:"CaseShuffle,omitempty" yaml:"case-shuffle"`
	// 案例是要计划的选定测试案例。
	// 如果为空，则运行所有故障案例。
	Cases []string `protobuf:"bytes,33,rep,name=Cases,proto3" json:"Cases,omitempty" yaml:"cases"`
	// FailpointCommands是“gofail”命令的列表
	// （例如，panic（“etcd测试仪”），1*sleep（1000）.
	FailpointCommands []string `protobuf:"bytes,34,rep,name=FailpointCommands,proto3" json:"FailpointCommands,omitempty" yaml:"failpoint-commands"`
	// RunnerExecPath是etcd runner二进制文件的路径。
	RunnerExecPath string `protobuf:"bytes,41,opt,name=RunnerExecPath,proto3" json:"RunnerExecPath,omitempty" yaml:"runner-exec-path"`
	// ExternalExecPath是用于启用/禁用外部故障注入器的脚本路径。
	ExternalExecPath string `protobuf:"bytes,42,opt,name=ExternalExecPath,proto3" json:"ExternalExecPath,omitempty" yaml:"external-exec-path"`
	// Stressers是压力源类型的列表：
	// KV，LEASE，ELECTION\u runner，WATCH\u runner，LOCK\RACER\u runner，LEASE\runner。
	Stressers []*Stresser `protobuf:"bytes,101,rep,name=Stressers,proto3" json:"Stressers,omitempty" yaml:"stressers"`
	// Checkers是一致性检查器类型的列表：
	// KV_散列、租约到期、无_检查、RUNNER。
	// 留空以跳过一致性检查。
	Checkers []string `protobuf:"bytes,102,rep,name=Checkers,proto3" json:"Checkers,omitempty" yaml:"checkers"`
	// StressKeySize是写入etcd的每个小键的大小。
	StressKeySize int32 `protobuf:"varint,201,opt,name=StressKeySize,proto3" json:"StressKeySize,omitempty" yaml:"stress-key-size"`
	// StressKeySizeLarge是每个大键的大小写入etcd。
	StressKeySizeLarge int32 `protobuf:"varint,202,opt,name=StressKeySizeLarge,proto3" json:"StressKeySizeLarge,omitempty" yaml:"stress-key-size-large"`
	// StressKeySuffixRange是写入etcd的密钥范围计数。
	// 使用“fmt.Sprintf（“foo%016x”，rand.Intn（keySuffixRange）””创建密钥。
	StressKeySuffixRange int32 `protobuf:"varint,203,opt,name=StressKeySuffixRange,proto3" json:"StressKeySuffixRange,omitempty" yaml:"stress-key-suffix-range"`
	// StressKeySuffixRangeTxn是写入etcd的密钥范围计数（最大值100）.
	// 压力键是用“fmt.Sprintf（/k%03d，i）”创建的。
	StressKeySuffixRangeTxn int32 `protobuf:"varint,204,opt,name=StressKeySuffixRangeTxn,proto3" json:"StressKeySuffixRangeTxn,omitempty" yaml:"stress-key-suffix-range-txn"`
	// 压力键txnops是每个事务的操作数（最多64个）。
	StressKeyTxnOps int32 `protobuf:"varint,205,opt,name=StressKeyTxnOps,proto3" json:"StressKeyTxnOps,omitempty" yaml:"stress-key-txn-ops"`
	// 压力客户端是并发压力客户端数
	// 带“一”共享TCP连接。
	StressClients int32 `protobuf:"varint,301,opt,name=StressClients,proto3" json:"StressClients,omitempty" yaml:"stress-clients"`
	// StressQPS是每秒的最大压力源请求数。
	StressQPS            int32    `protobuf:"varint,302,opt,name=StressQPS,proto3" json:"StressQPS,omitempty" yaml:"stress-qps"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Tester) Reset()         { *m = Tester{} }
func (m *Tester) String() string { return proto.CompactTextString(m) }
func (*Tester) ProtoMessage()    {}
func (*Tester) Descriptor() ([]byte, []int) {
	return fileDescriptor_4fbc93a8dcc3881e, []int{4}
}
func (m *Tester) XXX_Unmarshal(b []byte) error {
	return m.Unmarshal(b)
}
func (m *Tester) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	if deterministic {
		return xxx_messageInfo_Tester.Marshal(b, m, deterministic)
	} else {
		b = b[:cap(b)]
		n, err := m.MarshalToSizedBuffer(b)
		if err != nil {
			return nil, err
		}
		return b[:n], nil
	}
}
func (m *Tester) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Tester.Merge(m, src)
}
func (m *Tester) XXX_Size() int {
	return m.Size()
}
func (m *Tester) XXX_DiscardUnknown() {
	xxx_messageInfo_Tester.DiscardUnknown(m)
}

var xxx_messageInfo_Tester proto.InternalMessageInfo

type Stresser struct {
	Type                 string   `protobuf:"bytes,1,opt,name=Type,proto3" json:"Type,omitempty" yaml:"type"`
	Weight               float64  `protobuf:"fixed64,2,opt,name=Weight,proto3" json:"Weight,omitempty" yaml:"weight"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Stresser) Reset()         { *m = Stresser{} }
func (m *Stresser) String() string { return proto.CompactTextString(m) }
func (*Stresser) ProtoMessage()    {}
func (*Stresser) Descriptor() ([]byte, []int) {
	return fileDescriptor_4fbc93a8dcc3881e, []int{5}
}
func (m *Stresser) XXX_Unmarshal(b []byte) error {
	return m.Unmarshal(b)
}
func (m *Stresser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	if deterministic {
		return xxx_messageInfo_Stresser.Marshal(b, m, deterministic)
	} else {
		b = b[:cap(b)]
		n, err := m.MarshalToSizedBuffer(b)
		if err != nil {
			return nil, err
		}
		return b[:n], nil
	}
}
func (m *Stresser) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Stresser.Merge(m, src)
}
func (m *Stresser) XXX_Size() int {
	return m.Size()
}
func (m *Stresser) XXX_DiscardUnknown() {
	xxx_messageInfo_Stresser.DiscardUnknown(m)
}

var xxx_messageInfo_Stresser proto.InternalMessageInfo

type Etcd struct {
	Name    string `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty" yaml:"name"`
	DataDir string `protobuf:"bytes,2,opt,name=DataDir,proto3" json:"DataDir,omitempty" yaml:"data-dir"`
	WALDir  string `protobuf:"bytes,3,opt,name=WALDir,proto3" json:"WALDir,omitempty" yaml:"wal-dir"`
	// HeartbeatIntervalMs是心跳间隔的时间（以毫秒为单位）。
	// 默认值为100，即100ms。
	HeartbeatIntervalMs int64 `protobuf:"varint,11,opt,name=HeartbeatIntervalMs,proto3" json:"HeartbeatIntervalMs,omitempty" yaml:"heartbeat-interval"`
	// ElectionTimeoutMs是时间（以毫秒为单位）用于选择超时。
	// 默认值为1000，即1s。
	ElectionTimeoutMs   int64    `protobuf:"varint,12,opt,name=ElectionTimeoutMs,proto3" json:"ElectionTimeoutMs,omitempty" yaml:"election-timeout"`
	ListenClientURLs    []string `protobuf:"bytes,21,rep,name=ListenClientURLs,proto3" json:"ListenClientURLs,omitempty" yaml:"listen-client-urls"`
	AdvertiseClientURLs []string `protobuf:"bytes,22,rep,name=AdvertiseClientURLs,proto3" json:"AdvertiseClientURLs,omitempty" yaml:"advertise-client-urls"`
	ClientAutoTLS       bool     `protobuf:"varint,23,opt,name=ClientAutoTLS,proto3" json:"ClientAutoTLS,omitempty" yaml:"auto-tls"`
	ClientCertAuth      bool     `protobuf:"varint,24,opt,name=ClientCertAuth,proto3" json:"ClientCertAuth,omitempty" yaml:"client-cert-auth"`
	ClientCertFile      string   `protobuf:"bytes,25,opt,name=ClientCertFile,proto3" json:"ClientCertFile,omitempty" yaml:"cert-file"`
	ClientKeyFile       string   `protobuf:"bytes,26,opt,name=ClientKeyFile,proto3" json:"ClientKeyFile,omitempty" yaml:"key-file"`
	ClientTrustedCAFile string   `protobuf:"bytes,27,opt,name=ClientTrustedCAFile,proto3" json:"ClientTrustedCAFile,omitempty" yaml:"trusted-ca-file"`
	ListenPeerURLs      []string `protobuf:"bytes,31,rep,name=ListenPeerURLs,proto3" json:"ListenPeerURLs,omitempty" yaml:"listen-peer-urls"`
	AdvertisePeerURLs   []string `protobuf:"bytes,32,rep,name=AdvertisePeerURLs,proto3" json:"AdvertisePeerURLs,omitempty" yaml:"initial-advertise-peer-urls"`
	PeerAutoTLS         bool     `protobuf:"varint,33,opt,name=PeerAutoTLS,proto3" json:"PeerAutoTLS,omitempty" yaml:"peer-auto-tls"`
	PeerClientCertAuth  bool     `protobuf:"varint,34,opt,name=PeerClientCertAuth,proto3" json:"PeerClientCertAuth,omitempty" yaml:"peer-client-cert-auth"`
	PeerCertFile        string   `protobuf:"bytes,35,opt,name=PeerCertFile,proto3" json:"PeerCertFile,omitempty" yaml:"peer-cert-file"`
	PeerKeyFile         string   `protobuf:"bytes,36,opt,name=PeerKeyFile,proto3" json:"PeerKeyFile,omitempty" yaml:"peer-key-file"`
	PeerTrustedCAFile   string   `protobuf:"bytes,37,opt,name=PeerTrustedCAFile,proto3" json:"PeerTrustedCAFile,omitempty" yaml:"peer-trusted-ca-file"`
	InitialCluster      string   `protobuf:"bytes,41,opt,name=InitialCluster,proto3" json:"InitialCluster,omitempty" yaml:"initial-cluster"`
	InitialClusterState string   `protobuf:"bytes,42,opt,name=InitialClusterState,proto3" json:"InitialClusterState,omitempty" yaml:"initial-cluster-state"`
	InitialClusterToken string   `protobuf:"bytes,43,opt,name=InitialClusterToken,proto3" json:"InitialClusterToken,omitempty" yaml:"initial-cluster-token"`
	SnapshotCount       int64    `protobuf:"varint,51,opt,name=SnapshotCount,proto3" json:"SnapshotCount,omitempty" yaml:"snapshot-count"`
	QuotaBackendBytes   int64    `protobuf:"varint,52,opt,name=QuotaBackendBytes,proto3" json:"QuotaBackendBytes,omitempty" yaml:"quota-backend-bytes"`
	PreVote             bool     `protobuf:"varint,63,opt,name=PreVote,proto3" json:"PreVote,omitempty" yaml:"pre-vote"`
	InitialCorruptCheck bool     `protobuf:"varint,64,opt,name=InitialCorruptCheck,proto3" json:"InitialCorruptCheck,omitempty" yaml:"initial-corrupt-check"`
	Logger              string   `protobuf:"bytes,71,opt,name=Logger,proto3" json:"Logger,omitempty" yaml:"logger"`
	// Logoutput是存储当前etcd服务器日志的日志文件。
	LogOutputs           []string `protobuf:"bytes,72,rep,name=LogOutputs,proto3" json:"LogOutputs,omitempty" yaml:"log-outputs"`
	LogLevel             string   `protobuf:"bytes,73,opt,name=LogLevel,proto3" json:"LogLevel,omitempty" yaml:"log-level"`
	SocketReuseAddress   bool     `protobuf:"varint,81,opt,name=SocketReuseAddress,proto3" json:"SocketReuseAddress,omitempty" yaml:"socket-reuse-address"`
	SocketReusePort      bool     `protobuf:"varint,82,opt,name=SocketReusePort,proto3" json:"SocketReusePort,omitempty" yaml:"socket-reuse-port"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Etcd) Reset()         { *m = Etcd{} }
func (m *Etcd) String() string { return proto.CompactTextString(m) }
func (*Etcd) ProtoMessage()    {}
func (*Etcd) Descriptor() ([]byte, []int) {
	return fileDescriptor_4fbc93a8dcc3881e, []int{6}
}
func (m *Etcd) XXX_Unmarshal(b []byte) error {
	return m.Unmarshal(b)
}
func (m *Etcd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	if deterministic {
		return xxx_messageInfo_Etcd.Marshal(b, m, deterministic)
	} else {
		b = b[:cap(b)]
		n, err := m.MarshalToSizedBuffer(b)
		if err != nil {
			return nil, err
		}
		return b[:n], nil
	}
}
func (m *Etcd) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Etcd.Merge(m, src)
}
func (m *Etcd) XXX_Size() int {
	return m.Size()
}
func (m *Etcd) XXX_DiscardUnknown() {
	xxx_messageInfo_Etcd.DiscardUnknown(m)
}

var xxx_messageInfo_Etcd proto.InternalMessageInfo

func init() {
	proto.RegisterEnum("rpcpb.StresserType", StresserType_name, StresserType_value)
	proto.RegisterEnum("rpcpb.Checker", Checker_name, Checker_value)
	proto.RegisterEnum("rpcpb.Operation", Operation_name, Operation_value)
	proto.RegisterEnum("rpcpb.Case", Case_name, Case_value)
	proto.RegisterType((*Request)(nil), "rpcpb.Request")
	proto.RegisterType((*SnapshotInfo)(nil), "rpcpb.SnapshotInfo")
	proto.RegisterType((*Response)(nil), "rpcpb.Response")
	proto.RegisterType((*Member)(nil), "rpcpb.Member")
	proto.RegisterType((*Tester)(nil), "rpcpb.Tester")
	proto.RegisterType((*Stresser)(nil), "rpcpb.Stresser")
	proto.RegisterType((*Etcd)(nil), "rpcpb.Etcd")
}

func init() { proto.RegisterFile("rpcpb/rpc.proto", fileDescriptor_4fbc93a8dcc3881e) }

var fileDescriptor_4fbc93a8dcc3881e = []byte{
	// 3090字节的Gzip文件描述符协议
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x5a, 0xcb, 0x77, 0xdb, 0xc6,
	0xf5, 0x36, 0x4d, 0x49, 0x96, 0x46, 0x2f, 0x68, 0x24, 0xd9, 0xf0, 0x4b, 0x90, 0xe1, 0x38, 0x3f,
	0x59, 0x09, 0x6c, 0xff, 0xec, 0x9c, 0x3c, 0x9c, 0x26, 0x0e, 0x48, 0x41, 0x12, 0x4b, 0x88, 0xa4,
	0x87, 0x90, 0x6c, 0x77, 0x51, 0x1c, 0x88, 0x1c, 0x49, 0x3c, 0xa6, 0x00, 0x06, 0x18, 0x3a, 0x52,
	0x96, 0xdd, 0x74, 0xdb, 0xb4, 0x69, 0x4f, 0x7b, 0x4e, 0xf7, 0xdd, 0x34, 0xed, 0xa2, 0xeb, 0xee,
	0x9d, 0x57, 0x9b, 0xb6, 0xab, 0x76, 0xc1, 0xd3, 0xa6, 0xff, 0x01, 0x4f, 0xdf, 0x8b, 0x9e, 0x9e,
	0x99, 0x01, 0xc8, 0x01, 0x40, 0xca, 0x5a, 0x59, 0xb8, 0xf7, 0xfb, 0xbe, 0xb9, 0x98, 0x7b, 0x31,
	0xf7, 0x8e, 0x2c, 0x30, 0xeb, 0xb7, 0x6a, 0xad, 0xdd, 0xdb, 0x7e, 0xab, 0x76, 0xab, 0xe5, 0x7b,
	0xc4, 0x83, 0xa3, 0xcc, 0x70, 0x69, 0x61, 0xdf, 0xdb, 0xf7, 0x98, 0xe5, 0x36, 0xfd, 0x89, 0x3b,
	0xd5, 0xef, 0x66, 0xc0, 0x39, 0x84, 0xdf, 0x6f, 0xe3, 0x80, 0xc0, 0x5b, 0x60, 0xa2, 0xdc, 0xc2,
	0xbe, 0x43, 0x1a, 0x9e, 0x2b, 0x67, 0x96, 0x33, 0x2b, 0x33, 0x77, 0xa5, 0x5b, 0x8c, 0x7c, 0xab,
	0x67, 0x47, 0x7d, 0x08, 0xbc, 0x01, 0xc6, 0xb6, 0xf0, 0xe1, 0x2e, 0xf6, 0xe5, 0xb3, 0xcb, 0x99,
	0x95, 0xc9, 0xbb, 0xd3, 0x21, 0x98, 0x1b, 0x51, 0xe8, 0xa4, 0x30, 0x0b, 0x07, 0x04, 0xfb, 0x72,
	0x36, 0x06, 0xe3, 0x46, 0x14, 0x3a, 0xd5, 0xef, 0x64, 0xc1, 0x54, 0xd5, 0x75, 0x5a, 0xc1, 0x81,
	0x47, 0x0a, 0xee, 0x9e, 0x07, 0x97, 0x00, 0xe0, 0x0a, 0x25, 0xe7, 0x10, 0xb3, 0x78, 0x26, 0x90,
	0x60, 0x81, 0xab, 0x40, 0xe2, 0x4f, 0xf9, 0x66, 0x03, 0xbb, 0x64, 0x1b, 0x99, 0x81, 0x7c, 0x76,
	0x39, 0xbb, 0x32, 0x81, 0x52, 0x76, 0xa8, 0xf6, 0xb5, 0x2b, 0x0e, 0x39, 0x60, 0x91, 0x4c, 0xa0,
	0x98, 0x8d, 0xea, 0x45, 0xcf, 0xeb, 0x8d, 0x26, 0xae, 0x36, 0x3e, 0xc4, 0xf2, 0x08, 0xc3, 0xa5,
	0xec, 0xf0, 0x55, 0x30, 0x17, 0xd9, 0x2c, 0x8f, 0x38, 0x4d, 0x06, 0x1e, 0x65, 0xe0, 0xb4, 0x43,
	0x54, 0x66, 0xc6, 0x22, 0x3e, 0x96, 0xc7, 0x96, 0x33, 0x2b, 0x59, 0x94, 0xb2, 0x8b, 0x91, 0x6e,
	0x3a, 0xc1, 0x81, 0x7c, 0x8e, 0xe1, 0x62, 0x36, 0x51, 0x0f, 0xe1, 0x67, 0x8d, 0x80, 0xe6, 0x6b,
	0x3c, 0xae, 0x17, 0xd9, 0x21, 0x04, 0x23, 0x96, 0xe7, 0x3d, 0x95, 0x27, 0x58, 0x70, 0xec, 0x67,
	0x28, 0x83, 0x73, 0x3b, 0xd8, 0x67, 0x34, 0xc0, 0xcc, 0xd1, 0xa3, 0xfa, 0xd3, 0x0c, 0x18, 0x47,
	0x38, 0x68, 0x79, 0x6e, 0x80, 0x29, 0xac, 0xda, 0xae, 0xd5, 0x70, 0x10, 0xb0, 0xdd, 0x1f, 0x47,
	0xd1, 0x23, 0x3c, 0x0f, 0xc6, 0xaa, 0xc4, 0x21, 0xed, 0x80, 0x65, 0x7e, 0x02, 0x85, 0x4f, 0x42,
	0x45, 0x64, 0x4f, 0xaa, 0x88, 0x37, 0xe2, 0x99, 0x66, 0xbb, 0x3c, 0x79, 0x77, 0x3e, 0x04, 0x8b,
	0x2e, 0x14, 0x03, 0xaa, 0x9f, 0x4d, 0x45, 0x0b, 0xc0, 0x3b, 0x60, 0xdc, 0x20, 0xb5, 0xba, 0x71,
	0x84, 0x6b, 0xbc, 0x36, 0x72, 0x0b, 0xdd, 0x8e, 0x22, 0x1d, 0x3b, 0x87, 0xcd, 0xfb, 0x2a, 0x26,
	0xb5, 0xba, 0x86, 0x8f, 0x70, 0x4d, 0x45, 0x3d, 0x14, 0xbc, 0x07, 0x26, 0xf4, 0x7d, 0xec, 0x12,
	0xbd, 0x5e, 0xf7, 0xe5, 0x49, 0x46, 0x59, 0xec, 0x76, 0x94, 0x39, 0x4e, 0x71, 0xa8, 0x4b, 0x73,
	0xea, 0x75, 0x5f, 0x45, 0x7d, 0x1c, 0x34, 0xc1, 0xdc, 0xba, 0xd3, 0x68, 0xb6, 0xbc, 0x86, 0x4b,
	0x36, 0x2d, 0xab, 0xc2, 0xc8, 0x53, 0x8c, 0xbc, 0xd4, 0xed, 0x28, 0x97, 0x38, 0x79, 0x2f, 0x82,
	0x68, 0x07, 0x84, 0xb4, 0x42, 0x95, 0x34, 0x11, 0x6a, 0xe0, 0x5c, 0xce, 0x09, 0xf0, 0x5a, 0xc3,
	0x97, 0x31, 0xd3, 0x98, 0xef, 0x76, 0x94, 0x59, 0xae, 0xb1, 0xeb, 0x04, 0x58, 0xab, 0x37, 0x7c,
	0x15, 0x45, 0x18, 0xb8, 0x01, 0x66, 0x69, 0xf4, 0xbc, 0x8e, 0x2b, 0xbe, 0x77, 0x74, 0x2c, 0x7f,
	0xca, 0x32, 0x91, 0xbb, 0xd2, 0xed, 0x28, 0xb2, 0xf0, 0xae, 0x35, 0x06, 0xd1, 0x5a, 0x14, 0xa3,
	0xa2, 0x24, 0x0b, 0xea, 0x60, 0x9a, 0x9a, 0x2a, 0x18, 0xfb, 0x5c, 0xe6, 0x33, 0x2e, 0x73, 0xa9,
	0xdb, 0x51, 0xce, 0x0b, 0x32, 0x2d, 0x8c, 0xfd, 0x48, 0x24, 0xce, 0x80, 0x15, 0x00, 0xfb, 0xaa,
	0x86, 0x5b, 0x67, 0x2f, 0x26, 0x7f, 0xc2, 0xf2, 0x9f, 0x53, 0xba, 0x1d, 0xe5, 0x72, 0x3a, 0x1c,
	0x1c, 0xc2, 0x54, 0x34, 0x80, 0x0b, 0xff, 0x1f, 0x8c, 0x50, 0xab, 0xfc, 0x0b, 0x7e, 0x7a, 0x4c,
	0x86, 0xe9, 0xa7, 0xb6, 0xdc, 0x6c, 0xb7, 0xa3, 0x4c, 0xf6, 0x05, 0x55, 0xc4, 0xa0, 0x30, 0x07,
	0x16, 0xe9, 0xbf, 0x65, 0xb7, 0x5f, 0xe6, 0x01, 0xf1, 0x7c, 0x2c, 0xff, 0x32, 0xad, 0x81, 0x06,
	0x43, 0xe1, 0x1a, 0x98, 0xe1, 0x81, 0xe4, 0xb1, 0x4f, 0xd6, 0x1c, 0xe2, 0xc8, 0x1f, 0xb1, 0xd3,
	0x20, 0x77, 0xb9, 0xdb, 0x51, 0x2e, 0xf0, 0x35, 0xc3, 0xf8, 0x6b, 0xd8, 0x27, 0x5a, 0xdd, 0x21,
	0x8e, 0x8a, 0x12, 0x9c, 0xb8, 0x0a, 0x3b, 0x52, 0xbe, 0x7f, 0xa2, 0x4a, 0xcb, 0x21, 0x07, 0x31,
	0x15, 0x76, 0xe4, 0xe8, 0x60, 0x9a, 0x5b, 0x8a, 0xf8, 0x98, 0x85, 0xf2, 0x03, 0x2e, 0x22, 0xe4,
	0x25, 0x14, 0x79, 0x8a, 0x8f, 0xc3, 0x48, 0xe2, 0x8c, 0x98, 0x04, 0x8b, 0xe3, 0xe3, 0x93, 0x24,
	0x78, 0x18, 0x71, 0x06, 0xb4, 0xc0, 0x3c, 0x37, 0x58, 0x7e, 0x3b, 0x20, 0xb8, 0x9e, 0xd7, 0x59,
	0x2c, 0x3f, 0xe4, 0x42, 0xd7, 0xba, 0x1d, 0xe5, 0x6a, 0x4c, 0x88, 0x70, 0x98, 0x56, 0x73, 0xc2,
	0x90, 0x06, 0xd1, 0x07, 0xa8, 0xb2, 0xf0, 0x7e, 0x74, 0x0a, 0x55, 0x1e, 0xe5, 0x20, 0x3a, 0x7c,
	0x17, 0x4c, 0xd1, 0x9a, 0xec, 0xe5, 0xee, 0xef, 0x5c, 0xee, 0x62, 0xb7, 0xa3, 0x2c, 0x72, 0x39,
	0x56, 0xc3, 0x42, 0xe6, 0x62, 0x78, 0x91, 0xcf, 0xc2, 0xf9, 0xc7, 0x09, 0x7c, 0x1e, 0x46, 0x0c,
	0x0f, 0xdf, 0x06, 0x93, 0xf4, 0x39, 0xca, 0xd7, 0x3f, 0x39, 0x5d, 0xee, 0x76, 0x94, 0x05, 0x81,
	0xde, 0xcf, 0x96, 0x88, 0x16, 0xc8, 0x6c, 0xed, 0x7f, 0x0d, 0x27, 0xf3, 0xa5, 0x45, 0x34, 0x2c,
	0x81, 0x39, 0xfa, 0x18, 0xcf, 0xd1, 0xbf, 0xb3, 0xc9, 0xef, 0x8f, 0x49, 0xa4, 0x32, 0x94, 0xa6,
	0xa6, 0xf4, 0x58, 0x48, 0xff, 0x79, 0xa1, 0x1e, 0x8f, 0x2c, 0x4d, 0x85, 0xef, 0x24, 0x5a, 0xec,
	0x1f, 0x47, 0x92, 0x6f, 0x17, 0x84, 0xee, 0x68, 0x63, 0x63, 0xdd, 0xf7, 0xcd, 0x44, 0x4f, 0xf8,
	0xd3, 0x69, 0x9b, 0x02, 0x7c, 0x1d, 0x80, 0xde, 0x49, 0x1b, 0xc8, 0xbf, 0x1e, 0x4d, 0x9e, 0xec,
	0xbd, 0xc3, 0x39, 0x50, 0x91, 0x80, 0x54, 0x7f, 0x35, 0x15, 0x0d, 0x26, 0xf4, 0x5c, 0xa6, 0x7b,
	0x42, 0xcf, 0xe5, 0x4c, 0xf2, 0x5c, 0xa6, 0x1b, 0x18, 0x9e, 0xcb, 0x21, 0x06, 0xbe, 0x0a, 0xce,
	0x95, 0x30, 0xf9, 0xc0, 0xf3, 0x9f, 0xf2, 0xfe, 0x97, 0x83, 0xdd, 0x8e, 0x32, 0xc3, 0xe1, 0x2e,
	0x77, 0xa8, 0x28, 0x82, 0xc0, 0xeb, 0x60, 0x84, 0x75, 0x0d, 0xbe, 0xb5, 0xc2, 0xc9, 0xc6, 0xdb,
	0x04, 0x73, 0xc2, 0x3c, 0x98, 0x59, 0xc3, 0x4d, 0xe7, 0xd8, 0x74, 0x08, 0x76, 0x6b, 0xc7, 0x5b,
	0x01, 0xeb, 0x50, 0xd3, 0xe2, 0x71, 0x52, 0xa7, 0x7e, 0xad, 0xc9, 0x01, 0xda, 0x61, 0xa0, 0xa2,
	0x04, 0x05, 0x7e, 0x13, 0x48, 0x71, 0x0b, 0x7a, 0xc6, 0x7a, 0xd5, 0xb4, 0xd8, 0xab, 0x92, 0x32,
	0x9a, 0xff, 0x4c, 0x45, 0x29, 0x1e, 0x7c, 0x02, 0x16, 0xb7, 0x5b, 0x75, 0x87, 0xe0, 0x7a, 0x22,
	0xae, 0x69, 0x26, 0x78, 0xbd, 0xdb, 0x51, 0x14, 0x2e, 0xd8, 0xe6, 0x30, 0x2d, 0x1d, 0xdf, 0x60,
	0x05, 0x9a, 0x30, 0xe4, 0xb5, 0xdd, 0xba, 0xd9, 0x38, 0x6c, 0x10, 0x79, 0x71, 0x39, 0xb3, 0x32,
	0x9a, 0x3b, 0xdf, 0xed, 0x28, 0x90, 0xeb, 0xf9, 0xd4, 0xa7, 0x35, 0xa9, 0x53, 0x45, 0x02, 0x12,
	0xe6, 0xc0, 0x8c, 0x71, 0xd4, 0x20, 0x65, 0x37, 0xef, 0x04, 0x98, 0x26, 0x52, 0x3e, 0x9f, 0xea,
	0x62, 0x47, 0x0d, 0xa2, 0x79, 0xae, 0x46, 0x73, 0xde, 0xf6, 0xb1, 0x8a, 0x12, 0x0c, 0xf8, 0x16,
	0x98, 0x34, 0x5c, 0x67, 0xb7, 0x89, 0x2b, 0x2d, 0xdf, 0xdb, 0x93, 0x2f, 0x30, 0x81, 0x0b, 0xdd,
	0x8e, 0x32, 0x1f, 0x0a, 0x30, 0xa7, 0xd6, 0xa2, 0x5e, 0x15, 0x89, 0x58, 0x78, 0x1f, 0x4c, 0x52,
	0x19, 0xf6, 0x32, 0x5b, 0x81, 0xac, 0xb0, 0x7d, 0x10, 0xca, 0xbb, 0xc6, 0x1a, 0x38, 0xdb, 0x04,
	0xfa, 0xf2, 0x22, 0x98, 0x2e, 0x4b, 0x1f, 0xab, 0x07, 0xed, 0xbd, 0xbd, 0x26, 0x96, 0x97, 0x93,
	0xcb, 0x32, 0x6e, 0xc0, 0xbd, 0x21, 0x35, 0xc4, 0xc2, 0x97, 0xc1, 0x28, 0x7d, 0x0c, 0xe4, 0x6b,
	0x74, 0xb6, 0xcd, 0x49, 0xdd, 0x8e, 0x32, 0xd5, 0x27, 0x05, 0x2a, 0xe2, 0x6e, 0x58, 0x14, 0x26,
	0x95, 0xbc, 0x77, 0x78, 0xe8, 0xb8, 0xf5, 0x40, 0x56, 0x19, 0xe7, 0x6a, 0xb7, 0xa3, 0x5c, 0x4c,
	0x4e, 0x2a, 0xb5, 0x10, 0x23, 0x0e, 0x2a, 0x11, 0x8f, 0x96, 0x23, 0x6a, 0xbb, 0x2e, 0xf6, 0xe9,
	0xe4, 0xc4, 0x3e, 0xe7, 0x9b, 0xc9, 0xee, 0xe6, 0x33, 0x3f, 0x9b, 0xb2, 0xa2, 0xee, 0x16, 0xa7,
	0xc0, 0x02, 0x90, 0x8c, 0x23, 0x82, 0x7d, 0xd7, 0x69, 0xf6, 0x64, 0x56, 0x99, 0x8c, 0x10, 0x10,
	0x0e, 0x11, 0xa2, 0x50, 0x8a, 0x06, 0xf3, 0x60, 0xa2, 0x4a, 0x7c, 0x1c, 0x04, 0xd8, 0x0f, 0x64,
	0xbc, 0x9c, 0x5d, 0x99, 0xbc, 0x3b, 0x1b, 0x9d, 0x0c, 0xa1, 0x5d, 0x9c, 0xff, 0x82, 0x08, 0xab,
	0xa2, 0x3e, 0x0f, 0xde, 0x06, 0xe3, 0xf9, 0x03, 0x5c, 0x7b, 0x4a, 0x35, 0xf6, 0xd8, 0xc6, 0x08,
	0x9f, 0x79, 0x2d, 0xf4, 0xa8, 0xa8, 0x07, 0xa2, 0xbd, 0x95, 0xb3, 0x8b, 0xf8, 0x98, 0x4d, 0xf8,
	0x6c, 0xfa, 0x1a, 0x15, 0x0b, 0x8e, 0xaf, 0xc4, 0xce, 0xec, 0xa0, 0xf1, 0x21, 0x56, 0x51, 0x9c,
	0x01, 0x1f, 0x02, 0x18, 0x33, 0x98, 0x8e, 0xbf, 0x8f, 0xf9, 0xf8, 0x35, 0x9a, 0x5b, 0xee, 0x76,
	0x94, 0x2b, 0x03, 0x75, 0xb4, 0x26, 0xc5, 0xa9, 0x68, 0x00, 0x19, 0x3e, 0x02, 0x0b, 0x7d, 0x6b,
	0x7b, 0x6f, 0xaf, 0x71, 0x84, 0x1c, 0x77, 0x1f, 0xcb, 0x9f, 0x73, 0x51, 0xb5, 0xdb, 0x51, 0x96,
	0xd2, 0xa2, 0x0c, 0xa8, 0xf9, 0x14, 0xa9, 0xa2, 0x81, 0x02, 0xd0, 0x01, 0x17, 0x06, 0xd9, 0xad,
	0x23, 0x57, 0xfe, 0x82, 0x6b, 0xbf, 0xdc, 0xed, 0x28, 0xea, 0x89, 0xda, 0x1a, 0x39, 0x72, 0x55,
	0x34, 0x4c, 0x07, 0x6e, 0x82, 0xd9, 0x9e, 0xcb, 0x3a, 0x72, 0xcb, 0xad, 0x40, 0xfe, 0x92, 0x4b,
	0x0b, 0x25, 0x21, 0x48, 0x93, 0x23, 0x57, 0xf3, 0x5a, 0x81, 0x8a, 0x92, 0x34, 0xf8, 0x5e, 0x94,
	0x1b, 0x3e, 0x25, 0x04, 0x7c, 0x14, 0x1d, 0x15, 0x3b, 0x79, 0xa8, 0xc3, 0xe7, 0x8b, 0xa0, 0x97,
	0x9a, 0x90, 0x00, 0x5f, 0x8b, 0x6a, 0xea, 0x61, 0xa5, 0xca, 0x87, 0xd0, 0x51, 0xb1, 0x6d, 0x84,
	0xec, 0xf7, 0x5b, 0xfd, 0x22, 0x7a, 0x58, 0xa9, 0xaa, 0xdf, 0x02, 0xe3, 0x51, 0x45, 0xd1, 0x93,
	0xdd, 0x3a, 0x6e, 0x85, 0x77, 0x53, 0xf1, 0x64, 0x27, 0xc7, 0x2d, 0xac, 0x22, 0xe6, 0x84, 0x37,
	0xc1, 0xd8, 0x23, 0xdc, 0xd8, 0x3f, 0x20, 0xac, 0x57, 0x64, 0x72, 0x73, 0xdd, 0x8e, 0x32, 0xcd,
	0x61, 0x1f, 0x30, 0xbb, 0x8a, 0x42, 0x80, 0xfa, 0x33, 0x89, 0x8f, 0xc4, 0x54, 0xb8, 0x7f, 0xe9,
	0x15, 0x85, 0x5d, 0xe7, 0x90, 0x0a, 0xb3, 0xfb, 0xaf, 0xd0, 0xb4, 0xce, 0x9e, 0xa2, 0x69, 0xad,
	0x82, 0xb1, 0x47, 0xba, 0x49, 0xd1, 0xd9, 0x64, 0xcf, 0xfa, 0xc0, 0x69, 0x72, 0x70, 0x88, 0x80,
	0x65, 0x30, 0xbf, 0x89, 0x1d, 0x9f, 0xec, 0x62, 0x87, 0x14, 0x5c, 0x82, 0xfd, 0x67, 0x4e, 0x33,
	0x6c, 0x49, 0x59, 0x31, 0x53, 0x07, 0x11, 0x48, 0x6b, 0x84, 0x28, 0x15, 0x0d, 0x62, 0xc2, 0x02,
	0x98, 0x33, 0x9a, 0xb8, 0x46, 0x1a, 0x9e, 0x6b, 0x35, 0x0e, 0xb1, 0xd7, 0x26, 0x5b, 0x01, 0x6b,
	0x4d, 0x59, 0xf1, 0x48, 0xc1, 0x21, 0x44, 0x23, 0x1c, 0xa3, 0xa2, 0x34, 0x8b, 0x9e, 0x2a, 0x66,
	0x23, 0x20, 0xd8, 0x15, 0xae, 0xfd, 0x8b, 0xc9, 0x63, 0xae, 0xc9, 0x10, 0xd1, 0x3d, 0xa4, 0xed,
	0x37, 0x03, 0x15, 0xa5, 0x68, 0x10, 0x81, 0x79, 0xbd, 0xfe, 0x0c, 0xfb, 0xa4, 0x11, 0x60, 0x41,
	0xed, 0x3c, 0x53, 0x13, 0x3e, 0x4e, 0x27, 0x02, 0xc5, 0x05, 0x07, 0x91, 0xe1, 0x5b, 0xd1, 0x3c,
	0xae, 0xb7, 0x89, 0x67, 0x99, 0xd5, 0xb0, 0xc5, 0x08, 0xb9, 0x71, 0xda, 0xc4, 0xd3, 0x08, 0x15,
	0x88, 0x23, 0xe9, 0xa1, 0xdb, 0xbf, 0x1f, 0xe8, 0x6d, 0x72, 0x20, 0xcb, 0x8c, 0x3b, 0xe4, 0x4a,
	0xe1, 0xb4, 0x13, 0x57, 0x0a, 0x4a, 0x81, 0xdf, 0x10, 0x45, 0xd6, 0x1b, 0x4d, 0x2c, 0x5f, 0x4c,
	0xde, 0x8e, 0x19, 0x7b, 0xaf, 0x41, 0x3b, 0x4d, 0x02, 0xdb, 0x8f, 0xbe, 0x88, 0x8f, 0x19, 0xf9,
	0x52, 0xb2, 0xb2, 0xe8, 0x57, 0xc9, 0xb9, 0x71, 0x24, 0x34, 0x53, 0xf3, 0x3e, 0x13, 0xb8, 0x9c,
	0xbc, 0x8d, 0x08, 0xb3, 0x24, 0xd7, 0x19, 0x44, 0xa3, 0x7b, 0xc1, 0xd3, 0x45, 0x07, 0x4d, 0x96,
	0x15, 0x85, 0x65, 0x45, 0xd8, 0x8b, 0x30, 0xc7, 0x6c, 0x40, 0xe5, 0x09, 0x49, 0x50, 0xa0, 0x05,
	0xe6, 0x7a, 0x29, 0xea, 0xe9, 0x2c, 0x33, 0x1d, 0xe1, 0x24, 0x6b, 0xb8, 0x0d, 0xd2, 0x70, 0x9a,
	0x5a, 0x3f, 0xcb, 0x82, 0x64, 0x5a, 0x80, 0xce, 0x01, 0xf4, 0xe7, 0x28, 0xbf, 0xd7, 0x58, 0x8e,
	0x92, 0x43, 0x7c, 0x3f, 0xc9, 0x22, 0x98, 0xde, 0xa2, 0xd9, 0x75, 0x22, 0x9e, 0x66, 0x95, 0x49,
	0x08, 0x05, 0xc7, 0xef, 0x20, 0xa9, 0x5c, 0x0f, 0xe0, 0xd2, 0xb1, 0x3b, 0xba, 0xa0, 0xb0, 0xfd,
	0xbe, 0x3e, 0xfc, 0x3e, 0xc3, 0xb7, 0x3b, 0x06, 0x8f, 0x5e, 0x26, 0x4a, 0xf7, 0x4b, 0x43, 0x6f,
	0x24, 0x9c, 0x2c, 0x82, 0xe1, 0x56, 0xe2, 0x06, 0xc1, 0x14, 0x6e, 0xbc, 0xe8, 0x02, 0xc1, 0x85,
	0xd2, 0x4c, 0x3a, 0xde, 0x15, 0x78, 0x2a, 0xf2, 0xcd, 0x36, 0xfb, 0x7d, 0xe1, 0xcd, 0x64, 0xed,
	0x44, 0xa9, 0xaa, 0x71, 0x80, 0x8a, 0x12, 0x0c, 0xfa, 0x45, 0xc7, 0x2d, 0x55, 0xe2, 0x10, 0x1c,
	0x4e, 0x1d, 0xc2, 0x06, 0x27, 0x84, 0xb4, 0x80, 0xc2, 0x54, 0x34, 0x88, 0x9c, 0xd6, 0xb4, 0xbc,
	0xa7, 0xd8, 0x95, 0x5f, 0x79, 0x91, 0x26, 0xa1, 0xb0, 0x94, 0x26, 0x23, 0xc3, 0x07, 0x60, 0x3a,
	0xba, 0xc3, 0xe4, 0xbd, 0xb6, 0x4b, 0xe4, 0x7b, 0xec, 0x2c, 0x14, 0x9b, 0x57, 0x74, 0x59, 0xaa,
	0x51, 0x3f, 0x6d, 0x5e, 0x22, 0x1e, 0x9a, 0x60, 0xee, 0x61, 0xdb, 0x23, 0x4e, 0xce, 0xa9, 0x3d,
	0xc5, 0x6e, 0x3d, 0x77, 0x4c, 0x70, 0x20, 0xbf, 0xc6, 0x44, 0x84, 0x59, 0xff, 0x7d, 0x0a, 0xd1,
	0x76, 0x39, 0x46, 0xdb, 0xa5, 0x20, 0x15, 0xa5, 0x89, 0xb4, 0x95, 0x54, 0x7c, 0xbc, 0xe3, 0x11,
	0x2c, 0x3f, 0x48, 0x1e, 0x57, 0x2d, 0x1f, 0x6b, 0xcf, 0x3c, 0xba, 0x3b, 0x11, 0x46, 0xdc, 0x11,
	0xcf, 0xf7, 0xdb, 0x2d, 0xc2, 0x26, 0x26, 0xf9, 0xbd, 0x64, 0x19, 0xf7, 0x76, 0x84, 0xa3, 0x34,
	0x36, 0x63, 0x09, 0x3b, 0x22, 0x90, 0x69, 0x9b, 0x34, 0xbd, 0xfd, 0x7d, 0xec, 0xcb, 0x1b, 0x6c,
	0x63, 0x85, 0x36, 0xd9, 0x64, 0x76, 0x15, 0x85, 0x00, 0x7a, 0x7f, 0x30, 0xbd, 0xfd, 0x72, 0x9b,
	0xb4, 0xda, 0x24, 0x90, 0x37, 0xd9, 0xf7, 0x2c, 0xdc, 0x1f, 0x9a, 0xde, 0xbe, 0xe6, 0x71, 0xa7,
	0x8a, 0x04, 0x24, 0xbc, 0x03, 0xc6, 0x4d, 0x6f, 0xdf, 0xc4, 0xcf, 0x70, 0x53, 0x2e, 0x24, 0x0f,
	0x45, 0xca, 0x6a, 0x52, 0x97, 0x8a, 0x7a, 0x28, 0x58, 0x06, 0xb0, 0xea, 0xd5, 0x9e, 0x62, 0x82,
	0x70, 0x3b, 0xc0, 0xf4, 0xa2, 0x86, 0x83, 0x40, 0x7e, 0xc8, 0xde, 0x53, 0x28, 0xf1, 0x80, 0x61,
	0x34, 0x9f, 0x82, 0xd8, 0x2f, 0xff, 0x70, 0x10, 0xd0, 0xd9, 0x2d, 0x45, 0x85, 0xeb, 0x60, 0x56,
	0xb0, 0x56, 0x3c, 0x9f, 0xc8, 0x28, 0xf9, 0x0b, 0xbd, 0x98, 0x5a, 0xcb, 0xf3, 0x09, 0x9d, 0x7e,
	0xe2, 0xa4, 0xd5, 0xff, 0x66, 0xc0, 0x54, 0x34, 0x86, 0xb0, 0x29, 0x03, 0x82, 0x99, 0xe2, 0x8e,
	0xfd, 0x08, 0x15, 0x2c, 0xc3, 0xae, 0x6e, 0xe9, 0xa6, 0x29, 0x9d, 0x89, 0xd9, 0x4c, 0x1d, 0x6d,
	0x18, 0x52, 0x06, 0xce, 0x83, 0xd9, 0xe2, 0x8e, 0x8d, 0x0c, 0x7d, 0xcd, 0x2e, 0x97, 0x0c, 0xbb,
	0x68, 0x3c, 0x91, 0xce, 0xc2, 0x39, 0x30, 0x1d, 0x19, 0x91, 0x5e, 0xda, 0x30, 0xa4, 0x2c, 0x5c,
	0x04, 0x73, 0xc5, 0x1d, 0x7b, 0xcd, 0x30, 0x0d, 0xcb, 0xe8, 0x21, 0x47, 0x42, 0x7a, 0x68, 0xe6,
	0xd8, 0x51, 0x78, 0x01, 0xcc, 0x17, 0x77, 0x6c, 0xeb, 0x71, 0x29, 0x5c, 0x8b, 0xbb, 0xa5, 0x31,
	0x38, 0x01, 0x46, 0x4d, 0x43, 0xaf, 0x1a, 0x12, 0xa0, 0x44, 0xc3, 0x34, 0xf2, 0x56, 0xa1, 0x5c,
	0xb2, 0xd1, 0x76, 0xa9, 0x64, 0x20, 0x69, 0x01, 0x4a, 0x60, 0xea, 0x91, 0x6e, 0xe5, 0x37, 0x23,
	0x8b, 0x42, 0x97, 0x35, 0xcb, 0xf9, 0xa2, 0x8d, 0xf4, 0xbc, 0x81, 0x22, 0xf3, 0x4d, 0x0a, 0x64,
	0x42, 0x91, 0xe5, 0xde, 0xea, 0xb7, 0xc1, 0xb9, 0x70, 0x4c, 0x87, 0x93, 0xe0, 0x5c, 0x71, 0xc7,
	0xde, 0xd4, 0xab, 0x9b, 0xd2, 0x99, 0x3e, 0xd2, 0x78, 0x5c, 0x29, 0x20, 0xfa, 0xc6, 0x00, 0x8c,
	0x85, 0xac, 0xb3, 0x70, 0x0a, 0x8c, 0x97, 0xca, 0x76, 0x7e, 0xd3, 0xc8, 0x17, 0xa5, 0x2c, 0xbc,
	0x04, 0xce, 0x57, 0x37, 0xcb, 0xc8, 0xb2, 0x2d, 0xcb, 0xb4, 0x63, 0xac, 0x91, 0xd5, 0x9f, 0x64,
	0x85, 0xff, 0x0c, 0x81, 0xb3, 0x60, 0xb2, 0x54, 0xb6, 0xec, 0xaa, 0xa5, 0x23, 0xcb, 0x58, 0x93,
	0xce, 0xc0, 0xf3, 0x00, 0x16, 0x4a, 0x05, 0xab, 0xa0, 0x9b, 0xdc, 0x68, 0x1b, 0x56, 0x7e, 0x4d,
	0x02, 0x74, 0x79, 0x64, 0x08, 0x96, 0x49, 0x6a, 0xa9, 0x16, 0x36, 0x2c, 0x03, 0x6d, 0x71, 0xcb,
	0x02, 0x5c, 0x06, 0x57, 0xaa, 0x85, 0x8d, 0x87, 0xdb, 0x05, 0x8e, 0xb1, 0xf5, 0xd2, 0x9a, 0x8d,
	0x8c, 0xad, 0xf2, 0x8e, 0x61, 0xaf, 0xe9, 0x96, 0x2e, 0x2d, 0xd2, 0x7c, 0x54, 0xf5, 0x1d, 0xc3,
	0xae, 0x96, 0xf4, 0x4a, 0x75, 0xb3, 0x6c, 0x49, 0x4b, 0xf0, 0x1a, 0xb8, 0x4a, 0x85, 0xcb, 0xc8,
	0xb0, 0xa3, 0x05, 0xd6, 0x51, 0x79, 0xab, 0x0f, 0x51, 0xe0, 0x45, 0xb0, 0x38, 0xd8, 0xb5, 0x4c,
	0xd9, 0xa9, 0x25, 0x75, 0x94, 0xdf, 0x2c, 0x44, 0x6b, 0xae, 0xc0, 0xdb, 0xe0, 0x95, 0x93, 0xa2,
	0x62, 0xcf, 0x55, 0xab, 0x5c, 0xb1, 0xf5, 0x0d, 0xa3, 0x64, 0x49, 0x37, 0xe1, 0x55, 0x70, 0x31,
	0x67, 0xea, 0xf9, 0xe2, 0x66, 0xd9, 0x34, 0xec, 0x8a, 0x61, 0x20, 0xbb, 0xc2, 0xf6, 0xf2, 0xb1,
	0x8d, 0x1e, 0x4b, 0x75, 0xa8, 0x80, 0xcb, 0xdb, 0xa5, 0xe1, 0x00, 0x0c, 0x2f, 0x81, 0xc5, 0x35,
	0xc3, 0xd4, 0x9f, 0xa4, 0x5c, 0xcf, 0x33, 0xf0, 0x0a, 0xb8, 0xb0, 0x5d, 0x1a, 0xec, 0xfd, 0x34,
	0xb3, 0xfa, 0xf1, 0x24, 0x18, 0xa1, 0x77, 0x5e, 0x28, 0x83, 0x85, 0x68, 0x6f, 0x69, 0x89, 0xae,
	0x97, 0x4d, 0xb3, 0xfc, 0xc8, 0x40, 0xd2, 0x99, 0xf0, 0x6d, 0x52, 0x1e, 0x7b, 0xbb, 0x64, 0x15,
	0x4c, 0xdb, 0x42, 0x85, 0x8d, 0x0d, 0x03, 0xf5, 0x77, 0x28, 0x43, 0xbf, 0x95, 0x88, 0x60, 0x1a,
	0xfa, 0x1a, 0xab, 0x96, 0x9b, 0xe0, 0x46, 0xdc, 0x36, 0x8c, 0x9e, 0x15, 0xe9, 0x0f, 0xb7, 0xcb,
	0x68, 0x7b, 0x4b, 0x1a, 0xa1, 0x45, 0x13, 0xd9, 0xe8, 0xf7, 0x38, 0x0a, 0xaf, 0x03, 0x25, 0xda,
	0x62, 0x61, 0x77, 0x63, 0x91, 0x03, 0x78, 0x1f, 0xbc, 0xfe, 0x02, 0xd0, 0xb0, 0x28, 0x26, 0x69,
	0x4a, 0x06, 0x70, 0xc3, 0xf7, 0x99, 0x82, 0xaf, 0x81, 0x3b, 0x43, 0xdd, 0xc3, 0x44, 0xa7, 0xe1,
	0x3a, 0xc8, 0x0d, 0x60, 0xf1, 0xb7, 0x0c, 0x2d, 0xbc, 0x2e, 0x43, 0xa1, 0x88, 0x1a, 0x16, 0x61,
	0x1e, 0xd1, 0x2f, 0x5c, 0x9a, 0x81, 0xab, 0xe0, 0xe5, 0xa1, 0xe5, 0x10, 0xdf, 0x84, 0x3a, 0xd4,
	0xc1, 0x3b, 0xa7, 0xc3, 0x0e, 0x0b, 0x1b, 0xc3, 0x97, 0xc0, 0xf2, 0x70, 0x89, 0x70, 0x4b, 0xf6,
	0xe0, 0xdb, 0xe0, 0x8d, 0x17, 0xa1, 0x86, 0x2d, 0xb1, 0x7f, 0xf2, 0x12, 0x61, 0x19, 0x1c, 0xd0,
	0x6f, 0x6f, 0x38, 0x8a, 0x16, 0x46, 0x03, 0xfe, 0x1f, 0x50, 0x07, 0x16, 0x7b, 0x7c, 0x5b, 0x9e,
	0x67, 0xe0, 0x2d, 0x70, 0x13, 0xe9, 0xa5, 0xb5, 0xf2, 0x96, 0x7d, 0x0a, 0xfc, 0xa7, 0x19, 0xf8,
	0x2e, 0x78, 0xeb, 0xc5, 0xc0, 0x61, 0x2f, 0xf8, 0x59, 0x06, 0x1a, 0xe0, 0xbd, 0x53, 0xaf, 0x37,
	0x4c, 0xe6, 0xf3, 0x0c, 0xbc, 0x06, 0xae, 0x0c, 0xe6, 0x87, 0x79, 0xf8, 0x22, 0x03, 0x57, 0xc0,
	0xf5, 0x13, 0x57, 0x0a, 0x91, 0x5f, 0x66, 0xe0, 0x9b, 0xe0, 0xde, 0x49, 0x90, 0x61, 0x61, 0xfc,
	0x26, 0x03, 0x1f, 0x80, 0xfb, 0xa7, 0x58, 0x63, 0x98, 0xc0, 0x6f, 0x4f, 0x78, 0x8f, 0x30, 0xd9,
	0x5f, 0xbd, 0xf8, 0x3d, 0x42, 0xe4, 0xef, 0x32, 0x70, 0x09, 0x5c, 0x1c, 0x0c, 0xa1, 0x35, 0xf1,
	0xfb, 0x0c, 0xbc, 0x01, 0x96, 0x4f, 0x54, 0xa2, 0xb0, 0x3f, 0x64, 0xa0, 0x0c, 0xe6, 0x4b, 0x65,
	0x7b, 0x5d, 0x2f, 0x98, 0xf6, 0xa3, 0x82, 0xb5, 0x69, 0x57, 0x2d, 0x64, 0x54, 0xab, 0xd2, 0xcf,
	0xcf, 0xd2, 0x50, 0x62, 0x9e, 0x52, 0x39, 0x74, 0xda, 0xeb, 0x65, 0x64, 0x9b, 0x85, 0x1d, 0xa3,
	0x44, 0x91, 0x9f, 0x9c, 0x85, 0xb3, 0x00, 0x50, 0x58, 0xa5, 0x5c, 0x28, 0x59, 0x55, 0xe9, 0x7b,
	0x59, 0xf8, 0x12, 0x50, 0xfa, 0x06, 0xce, 0x5e, 0x2b, 0x54, 0x8b, 0x76, 0xa1, 0x6c, 0x9b, 0xba,
	0x65, 0x94, 0xf2, 0x4f, 0xa4, 0x8f, 0xb2, 0x70, 0x1a, 0x8c, 0x1b, 0x8f, 0x2d, 0x03, 0x95, 0x74,
	0x53, 0xfa, 0x5b, 0xf6, 0xee, 0x03, 0x30, 0x61, 0xf9, 0x8e, 0x1b, 0xd0, 0x91, 0x05, 0xde, 0x15,
	0x1f, 0x66, 0xc2, 0x5f, 0xd5, 0x85, 0x7f, 0x68, 0x70, 0x69, 0xb6, 0xf7, 0xcc, 0xff, 0xa7, 0x59,
	0x3d, 0xb3, 0x92, 0xb9, 0x93, 0xc9, 0x2d, 0x3c, 0xff, 0xcb, 0xd2, 0x99, 0xe7, 0x5f, 0x2f, 0x65,
	0xbe, 0xfa, 0x7a, 0x29, 0xf3, 0xe7, 0xaf, 0x97, 0x32, 0x3f, 0xfe, 0xeb, 0xd2, 0x99, 0xdd, 0x31,
	0xf6, 0x87, 0x0a, 0xf7, 0xfe, 0x17, 0x00, 0x00, 0xff, 0xff, 0x98, 0xc0, 0x8e, 0xfb, 0xd8, 0x20,
	0x00, 0x00,
}

// 引用导入以抑制错误（如果未以其他方式使用）。
var _ context.Context
var _ grpc.ClientConn

// 这是一个编译时断言，用于确保生成的文件
// 与正在编译的grpc包兼容。
const _ = grpc.SupportPackageIsVersion4

// TransportClient是传输服务的客户端API。
// 
// 有关ctx使用和关闭/结束流式RPC的语义，请参阅https:
type TransportClient interface {
	Transport(ctx context.Context, opts ...grpc.CallOption) (Transport_TransportClient, error)
}

type transportClient struct {
	cc *grpc.ClientConn
}

func NewTransportClient(cc *grpc.ClientConn) TransportClient {
	return &transportClient{cc}
}

func (c *transportClient) Transport(ctx context.Context, opts ...grpc.CallOption) (Transport_TransportClient, error) {
	stream, err := c.cc.NewStream(ctx, &_Transport_serviceDesc.Streams[0], "/rpcpb.Transport/Transport", opts...)
	if err != nil {
		return nil, err
	}
	x := &transportTransportClient{stream}
	return x, nil
}

type Transport_TransportClient interface {
	Send(*Request) error
	Recv() (*Response, error)
	grpc.ClientStream
}

type transportTransportClient struct {
	grpc.ClientStream
}

func (x *transportTransportClient) Send(m *Request) error {
	return x.ClientStream.SendMsg(m)
}

func (x *transportTransportClient) Recv() (*Response, error) {
	m := new(Response)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

// TransportServer是传输服务的服务器API。
type TransportServer interface {
	Transport(Transport_TransportServer) error
}

// 可以嵌入未实现的TransportServer，使其具有向前兼容的实现。
type UnimplementedTransportServer struct {
}

func (*UnimplementedTransportServer) Transport(srv Transport_TransportServer) error {
	return status.Errorf(codes.Unimplemented, "method Transport not implemented")
}

func RegisterTransportServer(s *grpc.Server, srv TransportServer) {
	s.RegisterService(&_Transport_serviceDesc, srv)
}

func _Transport_Transport_Handler(srv interface{}, stream grpc.ServerStream) error {
	return srv.(TransportServer).Transport(&transportTransportServer{stream})
}

type Transport_TransportServer interface {
	Send(*Response) error
	Recv() (*Request, error)
	grpc.ServerStream
}

type transportTransportServer struct {
	grpc.ServerStream
}

func (x *transportTransportServer) Send(m *Response) error {
	return x.ServerStream.SendMsg(m)
}

func (x *transportTransportServer) Recv() (*Request, error) {
	m := new(Request)
	if err := x.ServerStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

var _Transport_serviceDesc = grpc.ServiceDesc{
	ServiceName: "rpcpb.Transport",
	HandlerType: (*TransportServer)(nil),
	Methods:     []grpc.MethodDesc{},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "Transport",
			Handler:       _Transport_Transport_Handler,
			ServerStreams: true,
			ClientStreams: true,
		},
	},
	Metadata: "rpcpb/rpc.proto",
}

func (m *Request) Marshal() (dAtA []byte, err error) {
	size := m.Size()
	dAtA = make([]byte, size)
	n, err := m.MarshalToSizedBuffer(dAtA[:size])
	if err != nil {
		return nil, err
	}
	return dAtA[:n], nil
}

func (m *Request) MarshalTo(dAtA []byte) (int, error) {
	size := m.Size()
	return m.MarshalToSizedBuffer(dAtA[:size])
}

func (m *Request) MarshalToSizedBuffer(dAtA []byte) (int, error) {
	i := len(dAtA)
	_ = i
	var l int
	_ = l
	if m.XXX_unrecognized != nil {
		i -= len(m.XXX_unrecognized)
		copy(dAtA[i:], m.XXX_unrecognized)
	}
	if m.Tester != nil {
		{
			size, err := m.Tester.MarshalToSizedBuffer(dAtA[:i])
			if err != nil {
				return 0, err
			}
			i -= size
			i = encodeVarintRpc(dAtA, i, uint64(size))
		}
		i--
		dAtA[i] = 0x1a
	}
	if m.Member != nil {
		{
			size, err := m.Member.MarshalToSizedBuffer(dAtA[:i])
			if err != nil {
				return 0, err
			}
			i -= size
			i = encodeVarintRpc(dAtA, i, uint64(size))
		}
		i--
		dAtA[i] = 0x12
	}
	if m.Operation != 0 {
		i = encodeVarintRpc(dAtA, i, uint64(m.Operation))
		i--
		dAtA[i] = 0x8
	}
	return len(dAtA) - i, nil
}

func (m *SnapshotInfo) Marshal() (dAtA []byte, err error) {
	size := m.Size()
	dAtA = make([]byte, size)
	n, err := m.MarshalToSizedBuffer(dAtA[:size])
	if err != nil {
		return nil, err
	}
	return dAtA[:n], nil
}

func (m *SnapshotInfo) MarshalTo(dAtA []byte) (int, error) {
	size := m.Size()
	return m.MarshalToSizedBuffer(dAtA[:size])
}

func (m *SnapshotInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) {
	i := len(dAtA)
	_ = i
	var l int
	_ = l
	if m.XXX_unrecognized != nil {
		i -= len(m.XXX_unrecognized)
		copy(dAtA[i:], m.XXX_unrecognized)
	}
	if len(m.Version) > 0 {
		i -= len(m.Version)
		copy(dAtA[i:], m.Version)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.Version)))
		i--
		dAtA[i] = 0x52
	}
	if len(m.Took) > 0 {
		i -= len(m.Took)
		copy(dAtA[i:], m.Took)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.Took)))
		i--
		dAtA[i] = 0x4a
	}
	if m.SnapshotRevision != 0 {
		i = encodeVarintRpc(dAtA, i, uint64(m.SnapshotRevision))
		i--
		dAtA[i] = 0x40
	}
	if m.SnapshotHash != 0 {
		i = encodeVarintRpc(dAtA, i, uint64(m.SnapshotHash))
		i--
		dAtA[i] = 0x38
	}
	if m.SnapshotTotalKey != 0 {
		i = encodeVarintRpc(dAtA, i, uint64(m.SnapshotTotalKey))
		i--
		dAtA[i] = 0x30
	}
	if len(m.SnapshotTotalSize) > 0 {
		i -= len(m.SnapshotTotalSize)
		copy(dAtA[i:], m.SnapshotTotalSize)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.SnapshotTotalSize)))
		i--
		dAtA[i] = 0x2a
	}
	if len(m.SnapshotFileSize) > 0 {
		i -= len(m.SnapshotFileSize)
		copy(dAtA[i:], m.SnapshotFileSize)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.SnapshotFileSize)))
		i--
		dAtA[i] = 0x22
	}
	if len(m.SnapshotPath) > 0 {
		i -= len(m.SnapshotPath)
		copy(dAtA[i:], m.SnapshotPath)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.SnapshotPath)))
		i--
		dAtA[i] = 0x1a
	}
	if len(m.MemberClientURLs) > 0 {
		for iNdEx := len(m.MemberClientURLs) - 1; iNdEx >= 0; iNdEx-- {
			i -= len(m.MemberClientURLs[iNdEx])
			copy(dAtA[i:], m.MemberClientURLs[iNdEx])
			i = encodeVarintRpc(dAtA, i, uint64(len(m.MemberClientURLs[iNdEx])))
			i--
			dAtA[i] = 0x12
		}
	}
	if len(m.MemberName) > 0 {
		i -= len(m.MemberName)
		copy(dAtA[i:], m.MemberName)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.MemberName)))
		i--
		dAtA[i] = 0xa
	}
	return len(dAtA) - i, nil
}

func (m *Response) Marshal() (dAtA []byte, err error) {
	size := m.Size()
	dAtA = make([]byte, size)
	n, err := m.MarshalToSizedBuffer(dAtA[:size])
	if err != nil {
		return nil, err
	}
	return dAtA[:n], nil
}

func (m *Response) MarshalTo(dAtA []byte) (int, error) {
	size := m.Size()
	return m.MarshalToSizedBuffer(dAtA[:size])
}

func (m *Response) MarshalToSizedBuffer(dAtA []byte) (int, error) {
	i := len(dAtA)
	_ = i
	var l int
	_ = l
	if m.XXX_unrecognized != nil {
		i -= len(m.XXX_unrecognized)
		copy(dAtA[i:], m.XXX_unrecognized)
	}
	if m.SnapshotInfo != nil {
		{
			size, err := m.SnapshotInfo.MarshalToSizedBuffer(dAtA[:i])
			if err != nil {
				return 0, err
			}
			i -= size
			i = encodeVarintRpc(dAtA, i, uint64(size))
		}
		i--
		dAtA[i] = 0x22
	}
	if m.Member != nil {
		{
			size, err := m.Member.MarshalToSizedBuffer(dAtA[:i])
			if err != nil {
				return 0, err
			}
			i -= size
			i = encodeVarintRpc(dAtA, i, uint64(size))
		}
		i--
		dAtA[i] = 0x1a
	}
	if len(m.Status) > 0 {
		i -= len(m.Status)
		copy(dAtA[i:], m.Status)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.Status)))
		i--
		dAtA[i] = 0x12
	}
	if m.Success {
		i--
		if m.Success {
			dAtA[i] = 1
		} else {
			dAtA[i] = 0
		}
		i--
		dAtA[i] = 0x8
	}
	return len(dAtA) - i, nil
}

func (m *Member) Marshal() (dAtA []byte, err error) {
	size := m.Size()
	dAtA = make([]byte, size)
	n, err := m.MarshalToSizedBuffer(dAtA[:size])
	if err != nil {
		return nil, err
	}
	return dAtA[:n], nil
}

func (m *Member) MarshalTo(dAtA []byte) (int, error) {
	size := m.Size()
	return m.MarshalToSizedBuffer(dAtA[:size])
}

func (m *Member) MarshalToSizedBuffer(dAtA []byte) (int, error) {
	i := len(dAtA)
	_ = i
	var l int
	_ = l
	if m.XXX_unrecognized != nil {
		i -= len(m.XXX_unrecognized)
		copy(dAtA[i:], m.XXX_unrecognized)
	}
	if len(m.Failpoints) > 0 {
		i -= len(m.Failpoints)
		copy(dAtA[i:], m.Failpoints)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.Failpoints)))
		i--
		dAtA[i] = 0x2b
		i--
		dAtA[i] = 0xea
	}
	if m.SnapshotInfo != nil {
		{
			size, err := m.SnapshotInfo.MarshalToSizedBuffer(dAtA[:i])
			if err != nil {
				return 0, err
			}
			i -= size
			i = encodeVarintRpc(dAtA, i, uint64(size))
		}
		i--
		dAtA[i] = 0x25
		i--
		dAtA[i] = 0xd2
	}
	if len(m.SnapshotPath) > 0 {
		i -= len(m.SnapshotPath)
		copy(dAtA[i:], m.SnapshotPath)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.SnapshotPath)))
		i--
		dAtA[i] = 0x25
		i--
		dAtA[i] = 0xca
	}
	if len(m.PeerTrustedCAPath) > 0 {
		i -= len(m.PeerTrustedCAPath)
		copy(dAtA[i:], m.PeerTrustedCAPath)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerTrustedCAPath)))
		i--
		dAtA[i] = 0x1f
		i--
		dAtA[i] = 0xd2
	}
	if len(m.PeerTrustedCAData) > 0 {
		i -= len(m.PeerTrustedCAData)
		copy(dAtA[i:], m.PeerTrustedCAData)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerTrustedCAData)))
		i--
		dAtA[i] = 0x1f
		i--
		dAtA[i] = 0xca
	}
	if len(m.PeerKeyPath) > 0 {
		i -= len(m.PeerKeyPath)
		copy(dAtA[i:], m.PeerKeyPath)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerKeyPath)))
		i--
		dAtA[i] = 0x1f
		i--
		dAtA[i] = 0xc2
	}
	if len(m.PeerKeyData) > 0 {
		i -= len(m.PeerKeyData)
		copy(dAtA[i:], m.PeerKeyData)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerKeyData)))
		i--
		dAtA[i] = 0x1f
		i--
		dAtA[i] = 0xba
	}
	if len(m.PeerCertPath) > 0 {
		i -= len(m.PeerCertPath)
		copy(dAtA[i:], m.PeerCertPath)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerCertPath)))
		i--
		dAtA[i] = 0x1f
		i--
		dAtA[i] = 0xb2
	}
	if len(m.PeerCertData) > 0 {
		i -= len(m.PeerCertData)
		copy(dAtA[i:], m.PeerCertData)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerCertData)))
		i--
		dAtA[i] = 0x1f
		i--
		dAtA[i] = 0xaa
	}
	if len(m.ClientTrustedCAPath) > 0 {
		i -= len(m.ClientTrustedCAPath)
		copy(dAtA[i:], m.ClientTrustedCAPath)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientTrustedCAPath)))
		i--
		dAtA[i] = 0x19
		i--
		dAtA[i] = 0xb2
	}
	if len(m.ClientTrustedCAData) > 0 {
		i -= len(m.ClientTrustedCAData)
		copy(dAtA[i:], m.ClientTrustedCAData)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientTrustedCAData)))
		i--
		dAtA[i] = 0x19
		i--
		dAtA[i] = 0xaa
	}
	if len(m.ClientKeyPath) > 0 {
		i -= len(m.ClientKeyPath)
		copy(dAtA[i:], m.ClientKeyPath)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientKeyPath)))
		i--
		dAtA[i] = 0x19
		i--
		dAtA[i] = 0xa2
	}
	if len(m.ClientKeyData) > 0 {
		i -= len(m.ClientKeyData)
		copy(dAtA[i:], m.ClientKeyData)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientKeyData)))
		i--
		dAtA[i] = 0x19
		i--
		dAtA[i] = 0x9a
	}
	if len(m.ClientCertPath) > 0 {
		i -= len(m.ClientCertPath)
		copy(dAtA[i:], m.ClientCertPath)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientCertPath)))
		i--
		dAtA[i] = 0x19
		i--
		dAtA[i] = 0x92
	}
	if len(m.ClientCertData) > 0 {
		i -= len(m.ClientCertData)
		copy(dAtA[i:], m.ClientCertData)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientCertData)))
		i--
		dAtA[i] = 0x19
		i--
		dAtA[i] = 0x8a
	}
	if m.EtcdOnSnapshotRestore != nil {
		{
			size, err := m.EtcdOnSnapshotRestore.MarshalToSizedBuffer(dAtA[:i])
			if err != nil {
				return 0, err
			}
			i -= size
			i = encodeVarintRpc(dAtA, i, uint64(size))
		}
		i--
		dAtA[i] = 0x12
		i--
		dAtA[i] = 0xfa
	}
	if m.Etcd != nil {
		{
			size, err := m.Etcd.MarshalToSizedBuffer(dAtA[:i])
			if err != nil {
				return 0, err
			}
			i -= size
			i = encodeVarintRpc(dAtA, i, uint64(size))
		}
		i--
		dAtA[i] = 0x12
		i--
		dAtA[i] = 0xf2
	}
	if len(m.EtcdClientEndpoint) > 0 {
		i -= len(m.EtcdClientEndpoint)
		copy(dAtA[i:], m.EtcdClientEndpoint)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.EtcdClientEndpoint)))
		i--
		dAtA[i] = 0x12
		i--
		dAtA[i] = 0xea
	}
	if m.EtcdPeerProxy {
		i--
		if m.EtcdPeerProxy {
			dAtA[i] = 1
		} else {
			dAtA[i] = 0
		}
		i--
		dAtA[i] = 0xc
		i--
		dAtA[i] = 0xd0
	}
	if m.EtcdClientProxy {
		i--
		if m.EtcdClientProxy {
			dAtA[i] = 1
		} else {
			dAtA[i] = 0
		}
		i--
		dAtA[i] = 0xc
		i--
		dAtA[i] = 0xc8
	}
	if len(m.BaseDir) > 0 {
		i -= len(m.BaseDir)
		copy(dAtA[i:], m.BaseDir)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.BaseDir)))
		i--
		dAtA[i] = 0x6
		i--
		dAtA[i] = 0xaa
	}
	if len(m.FailpointHTTPAddr) > 0 {
		i -= len(m.FailpointHTTPAddr)
		copy(dAtA[i:], m.FailpointHTTPAddr)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.FailpointHTTPAddr)))
		i--
		dAtA[i] = 0x62
	}
	if len(m.AgentAddr) > 0 {
		i -= len(m.AgentAddr)
		copy(dAtA[i:], m.AgentAddr)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.AgentAddr)))
		i--
		dAtA[i] = 0x5a
	}
	if len(m.EtcdExec) > 0 {
		i -= len(m.EtcdExec)
		copy(dAtA[i:], m.EtcdExec)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.EtcdExec)))
		i--
		dAtA[i] = 0xa
	}
	return len(dAtA) - i, nil
}

func (m *Tester) Marshal() (dAtA []byte, err error) {
	size := m.Size()
	dAtA = make([]byte, size)
	n, err := m.MarshalToSizedBuffer(dAtA[:size])
	if err != nil {
		return nil, err
	}
	return dAtA[:n], nil
}

func (m *Tester) MarshalTo(dAtA []byte) (int, error) {
	size := m.Size()
	return m.MarshalToSizedBuffer(dAtA[:size])
}

func (m *Tester) MarshalToSizedBuffer(dAtA []byte) (int, error) {
	i := len(dAtA)
	_ = i
	var l int
	_ = l
	if m.XXX_unrecognized != nil {
		i -= len(m.XXX_unrecognized)
		copy(dAtA[i:], m.XXX_unrecognized)
	}
	if m.StressQPS != 0 {
		i = encodeVarintRpc(dAtA, i, uint64(m.StressQPS))
		i--
		dAtA[i] = 0x12
		i--
		dAtA[i] = 0xf0
	}
	if m.StressClients != 0 {
		i = encodeVarintRpc(dAtA, i, uint64(m.StressClients))
		i--
		dAtA[i] = 0x12
		i--
		dAtA[i] = 0xe8
	}
	if m.StressKeyTxnOps != 0 {
		i = encodeVarintRpc(dAtA, i, uint64(m.StressKeyTxnOps))
		i--
		dAtA[i] = 0xc
		i--
		dAtA[i] = 0xe8
	}
	if m.StressKeySuffixRangeTxn != 0 {
		i = encodeVarintRpc(dAtA, i, uint64(m.StressKeySuffixRangeTxn))
		i--
		dAtA[i] = 0xc
		i--
		dAtA[i] = 0xe0
	}
	if m.StressKeySuffixRange != 0 {
		i = encodeVarintRpc(dAtA, i, uint64(m.StressKeySuffixRange))
		i--
		dAtA[i] = 0xc
		i--
		dAtA[i] = 0xd8
	}
	if m.StressKeySizeLarge != 0 {
		i = encodeVarintRpc(dAtA, i, uint64(m.StressKeySizeLarge))
		i--
		dAtA[i] = 0xc
		i--
		dAtA[i] = 0xd0
	}
	if m.StressKeySize != 0 {
		i = encodeVarintRpc(dAtA, i, uint64(m.StressKeySize))
		i--
		dAtA[i] = 0xc
		i--
		dAtA[i] = 0xc8
	}
	if len(m.Checkers) > 0 {
		for iNdEx := len(m.Checkers) - 1; iNdEx >= 0; iNdEx-- {
			i -= len(m.Checkers[iNdEx])
			copy(dAtA[i:], m.Checkers[iNdEx])
			i = encodeVarintRpc(dAtA, i, uint64(len(m.Checkers[iNdEx])))
			i--
			dAtA[i] = 0x6
			i--
			dAtA[i] = 0xb2
		}
	}
	if len(m.Stressers) > 0 {
		for iNdEx := len(m.Stressers) - 1; iNdEx >= 0; iNdEx-- {
			{
				size, err := m.Stressers[iNdEx].MarshalToSizedBuffer(dAtA[:i])
				if err != nil {
					return 0, err
				}
				i -= size
				i = encodeVarintRpc(dAtA, i, uint64(size))
			}
			i--
			dAtA[i] = 0x6
			i--
			dAtA[i] = 0xaa
		}
	}
	if len(m.ExternalExecPath) > 0 {
		i -= len(m.ExternalExecPath)
		copy(dAtA[i:], m.ExternalExecPath)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.ExternalExecPath)))
		i--
		dAtA[i] = 0x2
		i--
		dAtA[i] = 0xd2
	}
	if len(m.RunnerExecPath) > 0 {
		i -= len(m.RunnerExecPath)
		copy(dAtA[i:], m.RunnerExecPath)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.RunnerExecPath)))
		i--
		dAtA[i] = 0x2
		i--
		dAtA[i] = 0xca
	}
	if len(m.FailpointCommands) > 0 {
		for iNdEx := len(m.FailpointCommands) - 1; iNdEx >= 0; iNdEx-- {
			i -= len(m.FailpointCommands[iNdEx])
			copy(dAtA[i:], m.FailpointCommands[iNdEx])
			i = encodeVarintRpc(dAtA, i, uint64(len(m.FailpointCommands[iNdEx])))
			i--
			dAtA[i] = 0x2
			i--
			dAtA[i] = 0x92
		}
	}
	if len(m.Cases) > 0 {
		for iNdEx := len(m.Cases) - 1; iNdEx >= 0; iNdEx-- {
			i -= len(m.Cases[iNdEx])
			copy(dAtA[i:], m.Cases[iNdEx])
			i = encodeVarintRpc(dAtA, i, uint64(len(m.Cases[iNdEx])))
			i--
			dAtA[i] = 0x2
			i--
			dAtA[i] = 0x8a
		}
	}
	if m.CaseShuffle {
		i--
		if m.CaseShuffle {
			dAtA[i] = 1
		} else {
			dAtA[i] = 0
		}
		i--
		dAtA[i] = 0x2
		i--
		dAtA[i] = 0x80
	}
	if m.CaseDelayMs != 0 {
		i = encodeVarintRpc(dAtA, i, uint64(m.CaseDelayMs))
		i--
		dAtA[i] = 0x1
		i--
		dAtA[i] = 0xf8
	}
	if m.EnablePprof {
		i--
		if m.EnablePprof {
			dAtA[i] = 1
		} else {
			dAtA[i] = 0
		}
		i--
		dAtA[i] = 0x1
		i--
		dAtA[i] = 0xb8
	}
	if m.ExitOnCaseFail {
		i--
		if m.ExitOnCaseFail {
			dAtA[i] = 1
		} else {
			dAtA[i] = 0
		}
		i--
		dAtA[i] = 0x1
		i--
		dAtA[i] = 0xb0
	}
	if m.RoundLimit != 0 {
		i = encodeVarintRpc(dAtA, i, uint64(m.RoundLimit))
		i--
		dAtA[i] = 0x1
		i--
		dAtA[i] = 0xa8
	}
	if m.UpdatedDelayLatencyMs != 0 {
		i = encodeVarintRpc(dAtA, i, uint64(m.UpdatedDelayLatencyMs))
		i--
		dAtA[i] = 0x68
	}
	if m.DelayLatencyMsRv != 0 {
		i = encodeVarintRpc(dAtA, i, uint64(m.DelayLatencyMsRv))
		i--
		dAtA[i] = 0x60
	}
	if m.DelayLatencyMs != 0 {
		i = encodeVarintRpc(dAtA, i, uint64(m.DelayLatencyMs))
		i--
		dAtA[i] = 0x58
	}
	if len(m.Addr) > 0 {
		i -= len(m.Addr)
		copy(dAtA[i:], m.Addr)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.Addr)))
		i--
		dAtA[i] = 0x1a
	}
	if len(m.Network) > 0 {
		i -= len(m.Network)
		copy(dAtA[i:], m.Network)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.Network)))
		i--
		dAtA[i] = 0x12
	}
	if len(m.DataDir) > 0 {
		i -= len(m.DataDir)
		copy(dAtA[i:], m.DataDir)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.DataDir)))
		i--
		dAtA[i] = 0xa
	}
	return len(dAtA) - i, nil
}

func (m *Stresser) Marshal() (dAtA []byte, err error) {
	size := m.Size()
	dAtA = make([]byte, size)
	n, err := m.MarshalToSizedBuffer(dAtA[:size])
	if err != nil {
		return nil, err
	}
	return dAtA[:n], nil
}

func (m *Stresser) MarshalTo(dAtA []byte) (int, error) {
	size := m.Size()
	return m.MarshalToSizedBuffer(dAtA[:size])
}

func (m *Stresser) MarshalToSizedBuffer(dAtA []byte) (int, error) {
	i := len(dAtA)
	_ = i
	var l int
	_ = l
	if m.XXX_unrecognized != nil {
		i -= len(m.XXX_unrecognized)
		copy(dAtA[i:], m.XXX_unrecognized)
	}
	if m.Weight != 0 {
		i -= 8
		encoding_binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Weight))))
		i--
		dAtA[i] = 0x11
	}
	if len(m.Type) > 0 {
		i -= len(m.Type)
		copy(dAtA[i:], m.Type)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.Type)))
		i--
		dAtA[i] = 0xa
	}
	return len(dAtA) - i, nil
}

func (m *Etcd) Marshal() (dAtA []byte, err error) {
	size := m.Size()
	dAtA = make([]byte, size)
	n, err := m.MarshalToSizedBuffer(dAtA[:size])
	if err != nil {
		return nil, err
	}
	return dAtA[:n], nil
}

func (m *Etcd) MarshalTo(dAtA []byte) (int, error) {
	size := m.Size()
	return m.MarshalToSizedBuffer(dAtA[:size])
}

func (m *Etcd) MarshalToSizedBuffer(dAtA []byte) (int, error) {
	i := len(dAtA)
	_ = i
	var l int
	_ = l
	if m.XXX_unrecognized != nil {
		i -= len(m.XXX_unrecognized)
		copy(dAtA[i:], m.XXX_unrecognized)
	}
	if m.SocketReusePort {
		i--
		if m.SocketReusePort {
			dAtA[i] = 1
		} else {
			dAtA[i] = 0
		}
		i--
		dAtA[i] = 0x5
		i--
		dAtA[i] = 0x90
	}
	if m.SocketReuseAddress {
		i--
		if m.SocketReuseAddress {
			dAtA[i] = 1
		} else {
			dAtA[i] = 0
		}
		i--
		dAtA[i] = 0x5
		i--
		dAtA[i] = 0x88
	}
	if len(m.LogLevel) > 0 {
		i -= len(m.LogLevel)
		copy(dAtA[i:], m.LogLevel)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.LogLevel)))
		i--
		dAtA[i] = 0x4
		i--
		dAtA[i] = 0xca
	}
	if len(m.LogOutputs) > 0 {
		for iNdEx := len(m.LogOutputs) - 1; iNdEx >= 0; iNdEx-- {
			i -= len(m.LogOutputs[iNdEx])
			copy(dAtA[i:], m.LogOutputs[iNdEx])
			i = encodeVarintRpc(dAtA, i, uint64(len(m.LogOutputs[iNdEx])))
			i--
			dAtA[i] = 0x4
			i--
			dAtA[i] = 0xc2
		}
	}
	if len(m.Logger) > 0 {
		i -= len(m.Logger)
		copy(dAtA[i:], m.Logger)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.Logger)))
		i--
		dAtA[i] = 0x4
		i--
		dAtA[i] = 0xba
	}
	if m.InitialCorruptCheck {
		i--
		if m.InitialCorruptCheck {
			dAtA[i] = 1
		} else {
			dAtA[i] = 0
		}
		i--
		dAtA[i] = 0x4
		i--
		dAtA[i] = 0x80
	}
	if m.PreVote {
		i--
		if m.PreVote {
			dAtA[i] = 1
		} else {
			dAtA[i] = 0
		}
		i--
		dAtA[i] = 0x3
		i--
		dAtA[i] = 0xf8
	}
	if m.QuotaBackendBytes != 0 {
		i = encodeVarintRpc(dAtA, i, uint64(m.QuotaBackendBytes))
		i--
		dAtA[i] = 0x3
		i--
		dAtA[i] = 0xa0
	}
	if m.SnapshotCount != 0 {
		i = encodeVarintRpc(dAtA, i, uint64(m.SnapshotCount))
		i--
		dAtA[i] = 0x3
		i--
		dAtA[i] = 0x98
	}
	if len(m.InitialClusterToken) > 0 {
		i -= len(m.InitialClusterToken)
		copy(dAtA[i:], m.InitialClusterToken)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.InitialClusterToken)))
		i--
		dAtA[i] = 0x2
		i--
		dAtA[i] = 0xda
	}
	if len(m.InitialClusterState) > 0 {
		i -= len(m.InitialClusterState)
		copy(dAtA[i:], m.InitialClusterState)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.InitialClusterState)))
		i--
		dAtA[i] = 0x2
		i--
		dAtA[i] = 0xd2
	}
	if len(m.InitialCluster) > 0 {
		i -= len(m.InitialCluster)
		copy(dAtA[i:], m.InitialCluster)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.InitialCluster)))
		i--
		dAtA[i] = 0x2
		i--
		dAtA[i] = 0xca
	}
	if len(m.PeerTrustedCAFile) > 0 {
		i -= len(m.PeerTrustedCAFile)
		copy(dAtA[i:], m.PeerTrustedCAFile)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerTrustedCAFile)))
		i--
		dAtA[i] = 0x2
		i--
		dAtA[i] = 0xaa
	}
	if len(m.PeerKeyFile) > 0 {
		i -= len(m.PeerKeyFile)
		copy(dAtA[i:], m.PeerKeyFile)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerKeyFile)))
		i--
		dAtA[i] = 0x2
		i--
		dAtA[i] = 0xa2
	}
	if len(m.PeerCertFile) > 0 {
		i -= len(m.PeerCertFile)
		copy(dAtA[i:], m.PeerCertFile)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerCertFile)))
		i--
		dAtA[i] = 0x2
		i--
		dAtA[i] = 0x9a
	}
	if m.PeerClientCertAuth {
		i--
		if m.PeerClientCertAuth {
			dAtA[i] = 1
		} else {
			dAtA[i] = 0
		}
		i--
		dAtA[i] = 0x2
		i--
		dAtA[i] = 0x90
	}
	if m.PeerAutoTLS {
		i--
		if m.PeerAutoTLS {
			dAtA[i] = 1
		} else {
			dAtA[i] = 0
		}
		i--
		dAtA[i] = 0x2
		i--
		dAtA[i] = 0x88
	}
	if len(m.AdvertisePeerURLs) > 0 {
		for iNdEx := len(m.AdvertisePeerURLs) - 1; iNdEx >= 0; iNdEx-- {
			i -= len(m.AdvertisePeerURLs[iNdEx])
			copy(dAtA[i:], m.AdvertisePeerURLs[iNdEx])
			i = encodeVarintRpc(dAtA, i, uint64(len(m.AdvertisePeerURLs[iNdEx])))
			i--
			dAtA[i] = 0x2
			i--
			dAtA[i] = 0x82
		}
	}
	if len(m.ListenPeerURLs) > 0 {
		for iNdEx := len(m.ListenPeerURLs) - 1; iNdEx >= 0; iNdEx-- {
			i -= len(m.ListenPeerURLs[iNdEx])
			copy(dAtA[i:], m.ListenPeerURLs[iNdEx])
			i = encodeVarintRpc(dAtA, i, uint64(len(m.ListenPeerURLs[iNdEx])))
			i--
			dAtA[i] = 0x1
			i--
			dAtA[i] = 0xfa
		}
	}
	if len(m.ClientTrustedCAFile) > 0 {
		i -= len(m.ClientTrustedCAFile)
		copy(dAtA[i:], m.ClientTrustedCAFile)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientTrustedCAFile)))
		i--
		dAtA[i] = 0x1
		i--
		dAtA[i] = 0xda
	}
	if len(m.ClientKeyFile) > 0 {
		i -= len(m.ClientKeyFile)
		copy(dAtA[i:], m.ClientKeyFile)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientKeyFile)))
		i--
		dAtA[i] = 0x1
		i--
		dAtA[i] = 0xd2
	}
	if len(m.ClientCertFile) > 0 {
		i -= len(m.ClientCertFile)
		copy(dAtA[i:], m.ClientCertFile)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientCertFile)))
		i--
		dAtA[i] = 0x1
		i--
		dAtA[i] = 0xca
	}
	if m.ClientCertAuth {
		i--
		if m.ClientCertAuth {
			dAtA[i] = 1
		} else {
			dAtA[i] = 0
		}
		i--
		dAtA[i] = 0x1
		i--
		dAtA[i] = 0xc0
	}
	if m.ClientAutoTLS {
		i--
		if m.ClientAutoTLS {
			dAtA[i] = 1
		} else {
			dAtA[i] = 0
		}
		i--
		dAtA[i] = 0x1
		i--
		dAtA[i] = 0xb8
	}
	if len(m.AdvertiseClientURLs) > 0 {
		for iNdEx := len(m.AdvertiseClientURLs) - 1; iNdEx >= 0; iNdEx-- {
			i -= len(m.AdvertiseClientURLs[iNdEx])
			copy(dAtA[i:], m.AdvertiseClientURLs[iNdEx])
			i = encodeVarintRpc(dAtA, i, uint64(len(m.AdvertiseClientURLs[iNdEx])))
			i--
			dAtA[i] = 0x1
			i--
			dAtA[i] = 0xb2
		}
	}
	if len(m.ListenClientURLs) > 0 {
		for iNdEx := len(m.ListenClientURLs) - 1; iNdEx >= 0; iNdEx-- {
			i -= len(m.ListenClientURLs[iNdEx])
			copy(dAtA[i:], m.ListenClientURLs[iNdEx])
			i = encodeVarintRpc(dAtA, i, uint64(len(m.ListenClientURLs[iNdEx])))
			i--
			dAtA[i] = 0x1
			i--
			dAtA[i] = 0xaa
		}
	}
	if m.ElectionTimeoutMs != 0 {
		i = encodeVarintRpc(dAtA, i, uint64(m.ElectionTimeoutMs))
		i--
		dAtA[i] = 0x60
	}
	if m.HeartbeatIntervalMs != 0 {
		i = encodeVarintRpc(dAtA, i, uint64(m.HeartbeatIntervalMs))
		i--
		dAtA[i] = 0x58
	}
	if len(m.WALDir) > 0 {
		i -= len(m.WALDir)
		copy(dAtA[i:], m.WALDir)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.WALDir)))
		i--
		dAtA[i] = 0x1a
	}
	if len(m.DataDir) > 0 {
		i -= len(m.DataDir)
		copy(dAtA[i:], m.DataDir)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.DataDir)))
		i--
		dAtA[i] = 0x12
	}
	if len(m.Name) > 0 {
		i -= len(m.Name)
		copy(dAtA[i:], m.Name)
		i = encodeVarintRpc(dAtA, i, uint64(len(m.Name)))
		i--
		dAtA[i] = 0xa
	}
	return len(dAtA) - i, nil
}

func encodeVarintRpc(dAtA []byte, offset int, v uint64) int {
	offset -= sovRpc(v)
	base := offset
	for v >= 1<<7 {
		dAtA[offset] = uint8(v&0x7f | 0x80)
		v >>= 7
		offset++
	}
	dAtA[offset] = uint8(v)
	return base
}
func (m *Request) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	if m.Operation != 0 {
		n += 1 + sovRpc(uint64(m.Operation))
	}
	if m.Member != nil {
		l = m.Member.Size()
		n += 1 + l + sovRpc(uint64(l))
	}
	if m.Tester != nil {
		l = m.Tester.Size()
		n += 1 + l + sovRpc(uint64(l))
	}
	if m.XXX_unrecognized != nil {
		n += len(m.XXX_unrecognized)
	}
	return n
}

func (m *SnapshotInfo) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	l = len(m.MemberName)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	if len(m.MemberClientURLs) > 0 {
		for _, s := range m.MemberClientURLs {
			l = len(s)
			n += 1 + l + sovRpc(uint64(l))
		}
	}
	l = len(m.SnapshotPath)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	l = len(m.SnapshotFileSize)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	l = len(m.SnapshotTotalSize)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	if m.SnapshotTotalKey != 0 {
		n += 1 + sovRpc(uint64(m.SnapshotTotalKey))
	}
	if m.SnapshotHash != 0 {
		n += 1 + sovRpc(uint64(m.SnapshotHash))
	}
	if m.SnapshotRevision != 0 {
		n += 1 + sovRpc(uint64(m.SnapshotRevision))
	}
	l = len(m.Took)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	l = len(m.Version)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	if m.XXX_unrecognized != nil {
		n += len(m.XXX_unrecognized)
	}
	return n
}

func (m *Response) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	if m.Success {
		n += 2
	}
	l = len(m.Status)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	if m.Member != nil {
		l = m.Member.Size()
		n += 1 + l + sovRpc(uint64(l))
	}
	if m.SnapshotInfo != nil {
		l = m.SnapshotInfo.Size()
		n += 1 + l + sovRpc(uint64(l))
	}
	if m.XXX_unrecognized != nil {
		n += len(m.XXX_unrecognized)
	}
	return n
}

func (m *Member) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	l = len(m.EtcdExec)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	l = len(m.AgentAddr)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	l = len(m.FailpointHTTPAddr)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	l = len(m.BaseDir)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	if m.EtcdClientProxy {
		n += 3
	}
	if m.EtcdPeerProxy {
		n += 3
	}
	l = len(m.EtcdClientEndpoint)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	if m.Etcd != nil {
		l = m.Etcd.Size()
		n += 2 + l + sovRpc(uint64(l))
	}
	if m.EtcdOnSnapshotRestore != nil {
		l = m.EtcdOnSnapshotRestore.Size()
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.ClientCertData)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.ClientCertPath)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.ClientKeyData)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.ClientKeyPath)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.ClientTrustedCAData)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.ClientTrustedCAPath)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.PeerCertData)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.PeerCertPath)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.PeerKeyData)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.PeerKeyPath)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.PeerTrustedCAData)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.PeerTrustedCAPath)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.SnapshotPath)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	if m.SnapshotInfo != nil {
		l = m.SnapshotInfo.Size()
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.Failpoints)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	if m.XXX_unrecognized != nil {
		n += len(m.XXX_unrecognized)
	}
	return n
}

func (m *Tester) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	l = len(m.DataDir)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	l = len(m.Network)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	l = len(m.Addr)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	if m.DelayLatencyMs != 0 {
		n += 1 + sovRpc(uint64(m.DelayLatencyMs))
	}
	if m.DelayLatencyMsRv != 0 {
		n += 1 + sovRpc(uint64(m.DelayLatencyMsRv))
	}
	if m.UpdatedDelayLatencyMs != 0 {
		n += 1 + sovRpc(uint64(m.UpdatedDelayLatencyMs))
	}
	if m.RoundLimit != 0 {
		n += 2 + sovRpc(uint64(m.RoundLimit))
	}
	if m.ExitOnCaseFail {
		n += 3
	}
	if m.EnablePprof {
		n += 3
	}
	if m.CaseDelayMs != 0 {
		n += 2 + sovRpc(uint64(m.CaseDelayMs))
	}
	if m.CaseShuffle {
		n += 3
	}
	if len(m.Cases) > 0 {
		for _, s := range m.Cases {
			l = len(s)
			n += 2 + l + sovRpc(uint64(l))
		}
	}
	if len(m.FailpointCommands) > 0 {
		for _, s := range m.FailpointCommands {
			l = len(s)
			n += 2 + l + sovRpc(uint64(l))
		}
	}
	l = len(m.RunnerExecPath)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.ExternalExecPath)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	if len(m.Stressers) > 0 {
		for _, e := range m.Stressers {
			l = e.Size()
			n += 2 + l + sovRpc(uint64(l))
		}
	}
	if len(m.Checkers) > 0 {
		for _, s := range m.Checkers {
			l = len(s)
			n += 2 + l + sovRpc(uint64(l))
		}
	}
	if m.StressKeySize != 0 {
		n += 2 + sovRpc(uint64(m.StressKeySize))
	}
	if m.StressKeySizeLarge != 0 {
		n += 2 + sovRpc(uint64(m.StressKeySizeLarge))
	}
	if m.StressKeySuffixRange != 0 {
		n += 2 + sovRpc(uint64(m.StressKeySuffixRange))
	}
	if m.StressKeySuffixRangeTxn != 0 {
		n += 2 + sovRpc(uint64(m.StressKeySuffixRangeTxn))
	}
	if m.StressKeyTxnOps != 0 {
		n += 2 + sovRpc(uint64(m.StressKeyTxnOps))
	}
	if m.StressClients != 0 {
		n += 2 + sovRpc(uint64(m.StressClients))
	}
	if m.StressQPS != 0 {
		n += 2 + sovRpc(uint64(m.StressQPS))
	}
	if m.XXX_unrecognized != nil {
		n += len(m.XXX_unrecognized)
	}
	return n
}

func (m *Stresser) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	l = len(m.Type)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	if m.Weight != 0 {
		n += 9
	}
	if m.XXX_unrecognized != nil {
		n += len(m.XXX_unrecognized)
	}
	return n
}

func (m *Etcd) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	l = len(m.Name)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	l = len(m.DataDir)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	l = len(m.WALDir)
	if l > 0 {
		n += 1 + l + sovRpc(uint64(l))
	}
	if m.HeartbeatIntervalMs != 0 {
		n += 1 + sovRpc(uint64(m.HeartbeatIntervalMs))
	}
	if m.ElectionTimeoutMs != 0 {
		n += 1 + sovRpc(uint64(m.ElectionTimeoutMs))
	}
	if len(m.ListenClientURLs) > 0 {
		for _, s := range m.ListenClientURLs {
			l = len(s)
			n += 2 + l + sovRpc(uint64(l))
		}
	}
	if len(m.AdvertiseClientURLs) > 0 {
		for _, s := range m.AdvertiseClientURLs {
			l = len(s)
			n += 2 + l + sovRpc(uint64(l))
		}
	}
	if m.ClientAutoTLS {
		n += 3
	}
	if m.ClientCertAuth {
		n += 3
	}
	l = len(m.ClientCertFile)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.ClientKeyFile)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.ClientTrustedCAFile)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	if len(m.ListenPeerURLs) > 0 {
		for _, s := range m.ListenPeerURLs {
			l = len(s)
			n += 2 + l + sovRpc(uint64(l))
		}
	}
	if len(m.AdvertisePeerURLs) > 0 {
		for _, s := range m.AdvertisePeerURLs {
			l = len(s)
			n += 2 + l + sovRpc(uint64(l))
		}
	}
	if m.PeerAutoTLS {
		n += 3
	}
	if m.PeerClientCertAuth {
		n += 3
	}
	l = len(m.PeerCertFile)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.PeerKeyFile)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.PeerTrustedCAFile)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.InitialCluster)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.InitialClusterState)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	l = len(m.InitialClusterToken)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	if m.SnapshotCount != 0 {
		n += 2 + sovRpc(uint64(m.SnapshotCount))
	}
	if m.QuotaBackendBytes != 0 {
		n += 2 + sovRpc(uint64(m.QuotaBackendBytes))
	}
	if m.PreVote {
		n += 3
	}
	if m.InitialCorruptCheck {
		n += 3
	}
	l = len(m.Logger)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	if len(m.LogOutputs) > 0 {
		for _, s := range m.LogOutputs {
			l = len(s)
			n += 2 + l + sovRpc(uint64(l))
		}
	}
	l = len(m.LogLevel)
	if l > 0 {
		n += 2 + l + sovRpc(uint64(l))
	}
	if m.SocketReuseAddress {
		n += 3
	}
	if m.SocketReusePort {
		n += 3
	}
	if m.XXX_unrecognized != nil {
		n += len(m.XXX_unrecognized)
	}
	return n
}

func sovRpc(x uint64) (n int) {
	return (math_bits.Len64(x|1) + 6) / 7
}
func sozRpc(x uint64) (n int) {
	return sovRpc(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
func (m *Request) Unmarshal(dAtA []byte) error {
	l := len(dAtA)
	iNdEx := 0
	for iNdEx < l {
		preIndex := iNdEx
		var wire uint64
		for shift := uint(0); ; shift += 7 {
			if shift >= 64 {
				return ErrIntOverflowRpc
			}
			if iNdEx >= l {
				return io.ErrUnexpectedEOF
			}
			b := dAtA[iNdEx]
			iNdEx++
			wire |= uint64(b&0x7F) << shift
			if b < 0x80 {
				break
			}
		}
		fieldNum := int32(wire >> 3)
		wireType := int(wire & 0x7)
		if wireType == 4 {
			return fmt.Errorf("proto: Request: wiretype end group for non-group")
		}
		if fieldNum <= 0 {
			return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire)
		}
		switch fieldNum {
		case 1:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field Operation", wireType)
			}
			m.Operation = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.Operation |= Operation(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 2:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Member", wireType)
			}
			var msglen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				msglen |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if msglen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + msglen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if m.Member == nil {
				m.Member = &Member{}
			}
			if err := m.Member.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 3:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Tester", wireType)
			}
			var msglen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				msglen |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if msglen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + msglen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if m.Tester == nil {
				m.Tester = &Tester{}
			}
			if err := m.Tester.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		default:
			iNdEx = preIndex
			skippy, err := skipRpc(dAtA[iNdEx:])
			if err != nil {
				return err
			}
			if (skippy < 0) || (iNdEx+skippy) < 0 {
				return ErrInvalidLengthRpc
			}
			if (iNdEx + skippy) > l {
				return io.ErrUnexpectedEOF
			}
			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
			iNdEx += skippy
		}
	}

	if iNdEx > l {
		return io.ErrUnexpectedEOF
	}
	return nil
}
func (m *SnapshotInfo) Unmarshal(dAtA []byte) error {
	l := len(dAtA)
	iNdEx := 0
	for iNdEx < l {
		preIndex := iNdEx
		var wire uint64
		for shift := uint(0); ; shift += 7 {
			if shift >= 64 {
				return ErrIntOverflowRpc
			}
			if iNdEx >= l {
				return io.ErrUnexpectedEOF
			}
			b := dAtA[iNdEx]
			iNdEx++
			wire |= uint64(b&0x7F) << shift
			if b < 0x80 {
				break
			}
		}
		fieldNum := int32(wire >> 3)
		wireType := int(wire & 0x7)
		if wireType == 4 {
			return fmt.Errorf("proto: SnapshotInfo: wiretype end group for non-group")
		}
		if fieldNum <= 0 {
			return fmt.Errorf("proto: SnapshotInfo: illegal tag %d (wire type %d)", fieldNum, wire)
		}
		switch fieldNum {
		case 1:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field MemberName", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.MemberName = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 2:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field MemberClientURLs", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.MemberClientURLs = append(m.MemberClientURLs, string(dAtA[iNdEx:postIndex]))
			iNdEx = postIndex
		case 3:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field SnapshotPath", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.SnapshotPath = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 4:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field SnapshotFileSize", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.SnapshotFileSize = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 5:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field SnapshotTotalSize", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.SnapshotTotalSize = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 6:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field SnapshotTotalKey", wireType)
			}
			m.SnapshotTotalKey = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.SnapshotTotalKey |= int64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 7:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field SnapshotHash", wireType)
			}
			m.SnapshotHash = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.SnapshotHash |= int64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 8:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field SnapshotRevision", wireType)
			}
			m.SnapshotRevision = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.SnapshotRevision |= int64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 9:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Took", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.Took = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 10:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.Version = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		default:
			iNdEx = preIndex
			skippy, err := skipRpc(dAtA[iNdEx:])
			if err != nil {
				return err
			}
			if (skippy < 0) || (iNdEx+skippy) < 0 {
				return ErrInvalidLengthRpc
			}
			if (iNdEx + skippy) > l {
				return io.ErrUnexpectedEOF
			}
			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
			iNdEx += skippy
		}
	}

	if iNdEx > l {
		return io.ErrUnexpectedEOF
	}
	return nil
}
func (m *Response) Unmarshal(dAtA []byte) error {
	l := len(dAtA)
	iNdEx := 0
	for iNdEx < l {
		preIndex := iNdEx
		var wire uint64
		for shift := uint(0); ; shift += 7 {
			if shift >= 64 {
				return ErrIntOverflowRpc
			}
			if iNdEx >= l {
				return io.ErrUnexpectedEOF
			}
			b := dAtA[iNdEx]
			iNdEx++
			wire |= uint64(b&0x7F) << shift
			if b < 0x80 {
				break
			}
		}
		fieldNum := int32(wire >> 3)
		wireType := int(wire & 0x7)
		if wireType == 4 {
			return fmt.Errorf("proto: Response: wiretype end group for non-group")
		}
		if fieldNum <= 0 {
			return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire)
		}
		switch fieldNum {
		case 1:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field Success", wireType)
			}
			var v int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				v |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			m.Success = bool(v != 0)
		case 2:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.Status = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 3:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Member", wireType)
			}
			var msglen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				msglen |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if msglen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + msglen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if m.Member == nil {
				m.Member = &Member{}
			}
			if err := m.Member.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 4:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field SnapshotInfo", wireType)
			}
			var msglen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				msglen |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if msglen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + msglen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if m.SnapshotInfo == nil {
				m.SnapshotInfo = &SnapshotInfo{}
			}
			if err := m.SnapshotInfo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		default:
			iNdEx = preIndex
			skippy, err := skipRpc(dAtA[iNdEx:])
			if err != nil {
				return err
			}
			if (skippy < 0) || (iNdEx+skippy) < 0 {
				return ErrInvalidLengthRpc
			}
			if (iNdEx + skippy) > l {
				return io.ErrUnexpectedEOF
			}
			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
			iNdEx += skippy
		}
	}

	if iNdEx > l {
		return io.ErrUnexpectedEOF
	}
	return nil
}
func (m *Member) Unmarshal(dAtA []byte) error {
	l := len(dAtA)
	iNdEx := 0
	for iNdEx < l {
		preIndex := iNdEx
		var wire uint64
		for shift := uint(0); ; shift += 7 {
			if shift >= 64 {
				return ErrIntOverflowRpc
			}
			if iNdEx >= l {
				return io.ErrUnexpectedEOF
			}
			b := dAtA[iNdEx]
			iNdEx++
			wire |= uint64(b&0x7F) << shift
			if b < 0x80 {
				break
			}
		}
		fieldNum := int32(wire >> 3)
		wireType := int(wire & 0x7)
		if wireType == 4 {
			return fmt.Errorf("proto: Member: wiretype end group for non-group")
		}
		if fieldNum <= 0 {
			return fmt.Errorf("proto: Member: illegal tag %d (wire type %d)", fieldNum, wire)
		}
		switch fieldNum {
		case 1:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field EtcdExec", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.EtcdExec = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 11:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field AgentAddr", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.AgentAddr = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 12:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field FailpointHTTPAddr", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.FailpointHTTPAddr = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 101:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field BaseDir", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.BaseDir = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 201:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field EtcdClientProxy", wireType)
			}
			var v int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				v |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			m.EtcdClientProxy = bool(v != 0)
		case 202:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field EtcdPeerProxy", wireType)
			}
			var v int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				v |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			m.EtcdPeerProxy = bool(v != 0)
		case 301:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field EtcdClientEndpoint", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.EtcdClientEndpoint = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 302:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Etcd", wireType)
			}
			var msglen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				msglen |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if msglen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + msglen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if m.Etcd == nil {
				m.Etcd = &Etcd{}
			}
			if err := m.Etcd.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 303:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field EtcdOnSnapshotRestore", wireType)
			}
			var msglen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				msglen |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if msglen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + msglen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if m.EtcdOnSnapshotRestore == nil {
				m.EtcdOnSnapshotRestore = &Etcd{}
			}
			if err := m.EtcdOnSnapshotRestore.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 401:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field ClientCertData", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.ClientCertData = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 402:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field ClientCertPath", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.ClientCertPath = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 403:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field ClientKeyData", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.ClientKeyData = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 404:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field ClientKeyPath", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.ClientKeyPath = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 405:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field ClientTrustedCAData", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.ClientTrustedCAData = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 406:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field ClientTrustedCAPath", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.ClientTrustedCAPath = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 501:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field PeerCertData", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.PeerCertData = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 502:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field PeerCertPath", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.PeerCertPath = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 503:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field PeerKeyData", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.PeerKeyData = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 504:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field PeerKeyPath", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.PeerKeyPath = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 505:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field PeerTrustedCAData", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.PeerTrustedCAData = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 506:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field PeerTrustedCAPath", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.PeerTrustedCAPath = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 601:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field SnapshotPath", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.SnapshotPath = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 602:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field SnapshotInfo", wireType)
			}
			var msglen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				msglen |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if msglen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + msglen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if m.SnapshotInfo == nil {
				m.SnapshotInfo = &SnapshotInfo{}
			}
			if err := m.SnapshotInfo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 701:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Failpoints", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.Failpoints = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		default:
			iNdEx = preIndex
			skippy, err := skipRpc(dAtA[iNdEx:])
			if err != nil {
				return err
			}
			if (skippy < 0) || (iNdEx+skippy) < 0 {
				return ErrInvalidLengthRpc
			}
			if (iNdEx + skippy) > l {
				return io.ErrUnexpectedEOF
			}
			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
			iNdEx += skippy
		}
	}

	if iNdEx > l {
		return io.ErrUnexpectedEOF
	}
	return nil
}
func (m *Tester) Unmarshal(dAtA []byte) error {
	l := len(dAtA)
	iNdEx := 0
	for iNdEx < l {
		preIndex := iNdEx
		var wire uint64
		for shift := uint(0); ; shift += 7 {
			if shift >= 64 {
				return ErrIntOverflowRpc
			}
			if iNdEx >= l {
				return io.ErrUnexpectedEOF
			}
			b := dAtA[iNdEx]
			iNdEx++
			wire |= uint64(b&0x7F) << shift
			if b < 0x80 {
				break
			}
		}
		fieldNum := int32(wire >> 3)
		wireType := int(wire & 0x7)
		if wireType == 4 {
			return fmt.Errorf("proto: Tester: wiretype end group for non-group")
		}
		if fieldNum <= 0 {
			return fmt.Errorf("proto: Tester: illegal tag %d (wire type %d)", fieldNum, wire)
		}
		switch fieldNum {
		case 1:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field DataDir", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.DataDir = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 2:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Network", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.Network = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 3:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Addr", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.Addr = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 11:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field DelayLatencyMs", wireType)
			}
			m.DelayLatencyMs = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.DelayLatencyMs |= uint32(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 12:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field DelayLatencyMsRv", wireType)
			}
			m.DelayLatencyMsRv = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.DelayLatencyMsRv |= uint32(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 13:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field UpdatedDelayLatencyMs", wireType)
			}
			m.UpdatedDelayLatencyMs = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.UpdatedDelayLatencyMs |= uint32(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 21:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field RoundLimit", wireType)
			}
			m.RoundLimit = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.RoundLimit |= int32(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 22:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field ExitOnCaseFail", wireType)
			}
			var v int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				v |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			m.ExitOnCaseFail = bool(v != 0)
		case 23:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field EnablePprof", wireType)
			}
			var v int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				v |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			m.EnablePprof = bool(v != 0)
		case 31:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field CaseDelayMs", wireType)
			}
			m.CaseDelayMs = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.CaseDelayMs |= uint32(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 32:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field CaseShuffle", wireType)
			}
			var v int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				v |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			m.CaseShuffle = bool(v != 0)
		case 33:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Cases", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.Cases = append(m.Cases, string(dAtA[iNdEx:postIndex]))
			iNdEx = postIndex
		case 34:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field FailpointCommands", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.FailpointCommands = append(m.FailpointCommands, string(dAtA[iNdEx:postIndex]))
			iNdEx = postIndex
		case 41:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field RunnerExecPath", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.RunnerExecPath = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 42:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field ExternalExecPath", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.ExternalExecPath = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 101:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Stressers", wireType)
			}
			var msglen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				msglen |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if msglen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + msglen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.Stressers = append(m.Stressers, &Stresser{})
			if err := m.Stressers[len(m.Stressers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 102:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Checkers", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.Checkers = append(m.Checkers, string(dAtA[iNdEx:postIndex]))
			iNdEx = postIndex
		case 201:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field StressKeySize", wireType)
			}
			m.StressKeySize = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.StressKeySize |= int32(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 202:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field StressKeySizeLarge", wireType)
			}
			m.StressKeySizeLarge = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.StressKeySizeLarge |= int32(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 203:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field StressKeySuffixRange", wireType)
			}
			m.StressKeySuffixRange = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.StressKeySuffixRange |= int32(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 204:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field StressKeySuffixRangeTxn", wireType)
			}
			m.StressKeySuffixRangeTxn = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.StressKeySuffixRangeTxn |= int32(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 205:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field StressKeyTxnOps", wireType)
			}
			m.StressKeyTxnOps = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.StressKeyTxnOps |= int32(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 301:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field StressClients", wireType)
			}
			m.StressClients = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.StressClients |= int32(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 302:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field StressQPS", wireType)
			}
			m.StressQPS = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.StressQPS |= int32(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		default:
			iNdEx = preIndex
			skippy, err := skipRpc(dAtA[iNdEx:])
			if err != nil {
				return err
			}
			if (skippy < 0) || (iNdEx+skippy) < 0 {
				return ErrInvalidLengthRpc
			}
			if (iNdEx + skippy) > l {
				return io.ErrUnexpectedEOF
			}
			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
			iNdEx += skippy
		}
	}

	if iNdEx > l {
		return io.ErrUnexpectedEOF
	}
	return nil
}
func (m *Stresser) Unmarshal(dAtA []byte) error {
	l := len(dAtA)
	iNdEx := 0
	for iNdEx < l {
		preIndex := iNdEx
		var wire uint64
		for shift := uint(0); ; shift += 7 {
			if shift >= 64 {
				return ErrIntOverflowRpc
			}
			if iNdEx >= l {
				return io.ErrUnexpectedEOF
			}
			b := dAtA[iNdEx]
			iNdEx++
			wire |= uint64(b&0x7F) << shift
			if b < 0x80 {
				break
			}
		}
		fieldNum := int32(wire >> 3)
		wireType := int(wire & 0x7)
		if wireType == 4 {
			return fmt.Errorf("proto: Stresser: wiretype end group for non-group")
		}
		if fieldNum <= 0 {
			return fmt.Errorf("proto: Stresser: illegal tag %d (wire type %d)", fieldNum, wire)
		}
		switch fieldNum {
		case 1:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.Type = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 2:
			if wireType != 1 {
				return fmt.Errorf("proto: wrong wireType = %d for field Weight", wireType)
			}
			var v uint64
			if (iNdEx + 8) > l {
				return io.ErrUnexpectedEOF
			}
			v = uint64(encoding_binary.LittleEndian.Uint64(dAtA[iNdEx:]))
			iNdEx += 8
			m.Weight = float64(math.Float64frombits(v))
		default:
			iNdEx = preIndex
			skippy, err := skipRpc(dAtA[iNdEx:])
			if err != nil {
				return err
			}
			if (skippy < 0) || (iNdEx+skippy) < 0 {
				return ErrInvalidLengthRpc
			}
			if (iNdEx + skippy) > l {
				return io.ErrUnexpectedEOF
			}
			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
			iNdEx += skippy
		}
	}

	if iNdEx > l {
		return io.ErrUnexpectedEOF
	}
	return nil
}
func (m *Etcd) Unmarshal(dAtA []byte) error {
	l := len(dAtA)
	iNdEx := 0
	for iNdEx < l {
		preIndex := iNdEx
		var wire uint64
		for shift := uint(0); ; shift += 7 {
			if shift >= 64 {
				return ErrIntOverflowRpc
			}
			if iNdEx >= l {
				return io.ErrUnexpectedEOF
			}
			b := dAtA[iNdEx]
			iNdEx++
			wire |= uint64(b&0x7F) << shift
			if b < 0x80 {
				break
			}
		}
		fieldNum := int32(wire >> 3)
		wireType := int(wire & 0x7)
		if wireType == 4 {
			return fmt.Errorf("proto: Etcd: wiretype end group for non-group")
		}
		if fieldNum <= 0 {
			return fmt.Errorf("proto: Etcd: illegal tag %d (wire type %d)", fieldNum, wire)
		}
		switch fieldNum {
		case 1:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.Name = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 2:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field DataDir", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.DataDir = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 3:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field WALDir", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.WALDir = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 11:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field HeartbeatIntervalMs", wireType)
			}
			m.HeartbeatIntervalMs = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.HeartbeatIntervalMs |= int64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 12:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field ElectionTimeoutMs", wireType)
			}
			m.ElectionTimeoutMs = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.ElectionTimeoutMs |= int64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 21:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field ListenClientURLs", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.ListenClientURLs = append(m.ListenClientURLs, string(dAtA[iNdEx:postIndex]))
			iNdEx = postIndex
		case 22:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field AdvertiseClientURLs", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.AdvertiseClientURLs = append(m.AdvertiseClientURLs, string(dAtA[iNdEx:postIndex]))
			iNdEx = postIndex
		case 23:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field ClientAutoTLS", wireType)
			}
			var v int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				v |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			m.ClientAutoTLS = bool(v != 0)
		case 24:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field ClientCertAuth", wireType)
			}
			var v int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				v |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			m.ClientCertAuth = bool(v != 0)
		case 25:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field ClientCertFile", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.ClientCertFile = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 26:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field ClientKeyFile", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.ClientKeyFile = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 27:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field ClientTrustedCAFile", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.ClientTrustedCAFile = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 31:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field ListenPeerURLs", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.ListenPeerURLs = append(m.ListenPeerURLs, string(dAtA[iNdEx:postIndex]))
			iNdEx = postIndex
		case 32:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field AdvertisePeerURLs", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.AdvertisePeerURLs = append(m.AdvertisePeerURLs, string(dAtA[iNdEx:postIndex]))
			iNdEx = postIndex
		case 33:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field PeerAutoTLS", wireType)
			}
			var v int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				v |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			m.PeerAutoTLS = bool(v != 0)
		case 34:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field PeerClientCertAuth", wireType)
			}
			var v int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				v |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			m.PeerClientCertAuth = bool(v != 0)
		case 35:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field PeerCertFile", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.PeerCertFile = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 36:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field PeerKeyFile", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.PeerKeyFile = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 37:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field PeerTrustedCAFile", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.PeerTrustedCAFile = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 41:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field InitialCluster", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.InitialCluster = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 42:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field InitialClusterState", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.InitialClusterState = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 43:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field InitialClusterToken", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.InitialClusterToken = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 51:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field SnapshotCount", wireType)
			}
			m.SnapshotCount = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.SnapshotCount |= int64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 52:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field QuotaBackendBytes", wireType)
			}
			m.QuotaBackendBytes = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.QuotaBackendBytes |= int64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 63:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field PreVote", wireType)
			}
			var v int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				v |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			m.PreVote = bool(v != 0)
		case 64:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field InitialCorruptCheck", wireType)
			}
			var v int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				v |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			m.InitialCorruptCheck = bool(v != 0)
		case 71:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Logger", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.Logger = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 72:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field LogOutputs", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.LogOutputs = append(m.LogOutputs, string(dAtA[iNdEx:postIndex]))
			iNdEx = postIndex
		case 73:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field LogLevel", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthRpc
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthRpc
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.LogLevel = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 81:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field SocketReuseAddress", wireType)
			}
			var v int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				v |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			m.SocketReuseAddress = bool(v != 0)
		case 82:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field SocketReusePort", wireType)
			}
			var v int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				v |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			m.SocketReusePort = bool(v != 0)
		default:
			iNdEx = preIndex
			skippy, err := skipRpc(dAtA[iNdEx:])
			if err != nil {
				return err
			}
			if (skippy < 0) || (iNdEx+skippy) < 0 {
				return ErrInvalidLengthRpc
			}
			if (iNdEx + skippy) > l {
				return io.ErrUnexpectedEOF
			}
			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
			iNdEx += skippy
		}
	}

	if iNdEx > l {
		return io.ErrUnexpectedEOF
	}
	return nil
}
func skipRpc(dAtA []byte) (n int, err error) {
	l := len(dAtA)
	iNdEx := 0
	depth := 0
	for iNdEx < l {
		var wire uint64
		for shift := uint(0); ; shift += 7 {
			if shift >= 64 {
				return 0, ErrIntOverflowRpc
			}
			if iNdEx >= l {
				return 0, io.ErrUnexpectedEOF
			}
			b := dAtA[iNdEx]
			iNdEx++
			wire |= (uint64(b) & 0x7F) << shift
			if b < 0x80 {
				break
			}
		}
		wireType := int(wire & 0x7)
		switch wireType {
		case 0:
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return 0, ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return 0, io.ErrUnexpectedEOF
				}
				iNdEx++
				if dAtA[iNdEx-1] < 0x80 {
					break
				}
			}
		case 1:
			iNdEx += 8
		case 2:
			var length int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return 0, ErrIntOverflowRpc
				}
				if iNdEx >= l {
					return 0, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				length |= (int(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if length < 0 {
				return 0, ErrInvalidLengthRpc
			}
			iNdEx += length
		case 3:
			depth++
		case 4:
			if depth == 0 {
				return 0, ErrUnexpectedEndOfGroupRpc
			}
			depth--
		case 5:
			iNdEx += 4
		default:
			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
		}
		if iNdEx < 0 {
			return 0, ErrInvalidLengthRpc
		}
		if depth == 0 {
			return iNdEx, nil
		}
	}
	return 0, io.ErrUnexpectedEOF
}

var (
	ErrInvalidLengthRpc        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowRpc          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupRpc = fmt.Errorf("proto: unexpected end of group")
)
